我已经开始在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中编写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中进行二进制搜索的可能工作,我找到了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个项目,但我不确定它的执行时间.
任何意见 ?
据我所知,来自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) 我正在解决一个问题的解决方案,这需要改变模块的一个功能gb_trees.
我收到编译版本的错误gb_trees:
1> c(gb_trees).
cannot write to .bea#
...
2>
Run Code Online (Sandbox Code Playgroud)
我可以通过什么方式进行更改并编译已有的模块?
我在django中创建了一个空的QuerySet,就像这样.
empty = classname.objects.none()
Run Code Online (Sandbox Code Playgroud)
我有一个相同类的对象(称为类).
class
Run Code Online (Sandbox Code Playgroud)
我想要一个新的QuerySet,其中包含'class'.
EmptyQuerySet和|上没有append方法 和&不适用于db对象.