小编pra*_*jal的帖子

Erlang获取错误**1:语法错误之前:' - >'**

我已经开始在Erlang中进行一些实践了,我得到了:** 1: syntax error before: '->' **每当我宣布任何功能时,例如.计算列表的总和(这是实验性的,cource有内置函数用于查找列表的总和).

sum([]) -> 0;
sum([H | T]) -> H + sum(T).
Run Code Online (Sandbox Code Playgroud)

在erl shell(v 5.5.5)中.

提前致谢

erlang

15
推荐指数
2
解决办法
1万
查看次数

erlang中并行快速排序的问题

我在erlang中编写quicksort时遇到问题.我正在做的是我产生两个进程,然后阻止当前进程,直到我从左右子阵列得到响应.获取这两个响应后,我向其父级发送一条消息,为其提供计算列表.Parent ! {self(), Lone ++ [H] ++ Ltwo}

但是我在两个子流程中都遇到了取消undef的错误.这是代码.

  quick(Parent, []) -> Parent ! {self(), []};
  quick(Parent, [H | T]) ->
      Pone = spawn_link(main, quick, [ self(), [ X || X <- T, H >= X ] ]) ,
      Ptwo = spawn_link(main, quick, [ self(), [ Y || Y <- T, H < Y ] ]) ,
      receive
          {Pone, Lone} ->
              receive
                  {Ptwo, Ltwo} -> Parent ! {self(), Lone ++ [H] ++ Ltwo}
              end;
          {Ptwo, Ltwo} ->
              receive
                  {Pone, …
Run Code Online (Sandbox Code Playgroud)

erlang

7
推荐指数
1
解决办法
1207
查看次数

在lg(n)时间内在Erlang中进行二进制搜索

我正在搜索在Erlang中进行二进制搜索的可能工作,我找到了http://ruslanspivak.com/2007/08/15/my-erlang-binary-search/但我想知道博客中的解决方案是否运行O(lg n).现在,因为二进制搜索的重现是:T(n)= T(n/2)+ c,它给出了O(lg n)的执行时间.

因为在C数组中,您可以在O(1)时间内访问任何元素.但是在erlang中,如果访问列表中间需要cn时间,则二进制搜索在线性整体时间内运行与线性搜索一样差.

我遇到了列表:第n/2个BIF用于查找列表中的第n个项目,但我不确定它的执行时间.

任何意见 ?

erlang

5
推荐指数
1
解决办法
1878
查看次数

Tornado异步HTTP以递增方式返回结果

据我所知,来自tornado.gen模块的文件是tornado.gen.Task包含tornado.gen.Callback和tornado.gen.Wait,每个Callback/Wait对与唯一键相关联......

  @tornado.web.asynchronous
  @tornado.gen.engine
  def get(self):
      http_client = AsyncHTTPClient()
      http_client.fetch("http://google.com",
                        callback=(yield tornado.gen.Callback("google")))

      http_client.fetch("http://python.org",
                        callback=(yield tornado.gen.Callback("python")))

      http_client.fetch("http://tornadoweb.org",
                        callback=(yield tornado.gen.Callback("tornado")))
      response = yield [tornado.gen.Wait("google"), tornado.gen.Wait("tornado"), tornado.gen.Wait("python")]

      do_something_with_response(response)
      self.render("template.html")
Run Code Online (Sandbox Code Playgroud)

因此,上面的代码将获得来自不同URL的所有响应.现在我真正需要完成的是一旦http_client返回数据就返回响应.因此,如果'tornadoweb.org'首先返回数据,它应该执行self.write(respose),并且def get()中的循环应该等待其他http_clients完成.有关如何使用tornado.gen接口编写此内容的任何想法.

我试图做的非常模糊的实现(和语法错误)将是这样的

class GenAsyncHandler2(tornado.web.RequestHandler):
    @tornado.web.asynchronous
    @tornado.gen.engine
    def get(self):
        http_client = AsyncHTTPClient()
        http_client.fetch("http://google.com",
                          callback=(yield tornado.gen.Callback("google")))

        http_client.fetch("http://python.org",
                          callback=(yield tornado.gen.Callback("python")))

        http_client.fetch("http://tornadoweb.org",
                          callback=(yield tornado.gen.Callback("tornado")))

        while True:
            response = self.get_response()
            if response:
                self.write(response)
                self.flush()
            else:
                break
        self.finish()


    def get_response(self):
        for key in tornado.gen.availableKeys():
            if key.is_ready:
                value = tornado.gen.pop(key)
                return value
        return None
Run Code Online (Sandbox Code Playgroud)

python asynchronous tornado

5
推荐指数
1
解决办法
3965
查看次数

Erlang/OTP:对现有模块的更改

我正在解决一个问题的解决方案,这需要改变模块的一个功能gb_trees.

我收到编译版本的错误gb_trees:

1> c(gb_trees).
cannot write to .bea#
...
2>
Run Code Online (Sandbox Code Playgroud)

我可以通过什么方式进行更改并编译已有的模块?

erlang erlang-otp

3
推荐指数
1
解决办法
248
查看次数

Django将db对象与空QuerySet连接起来

我在django中创建了一个空的QuerySet,就像这样.

empty = classname.objects.none() 
Run Code Online (Sandbox Code Playgroud)

我有一个相同类的对象(称为类).

class
Run Code Online (Sandbox Code Playgroud)

我想要一个新的QuerySet,其中包含'class'.

EmptyQuerySet和|上没有append方法 和&不适用于db对象.

django django-models django-queryset

3
推荐指数
1
解决办法
2069
查看次数