精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-03-24
loop() -> receive {From, Msg} -> From ! {self(), Msg}, loop(); stop -> true end. 关于receive-end.结构,是不是如果这个结构所在进程的输入消息队列没有任何消息,则会一直阻塞,直到队列有一条消息,则会soft realtime 被唤醒,然后从队列取出消息,进行匹配,如果匹配到某一模式,则从输入队列删除消息,执行相应的actions,最后结束;如果没有匹配到任何模式,直接退出。是不是并不会递归从队列取消息。但是由于一般的写法,以及以上的例子,都使用到了函数递归调用,所以loop()函数才会循环消费消息,阻塞等待消息,直到遇到stop atom时退出函数。 再很好奇的问一下,他函数递归调用是怎么样的机制,按照正常的c栈,可能早就栈溢出了,还有Erlang中的函数递归调用退出,是不是也是一层一层。描述的不清楚,还请见谅。 哪位大大过来讲解一下,小弟我先谢过了 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-03-24
好像我关于receive-end.结构的描述是对的。Selection of any message 好像说的就是这个意思。俺不自信
关于函数递归调用的谁能讲讲 |
|
返回顶楼 | |
发表时间:2007-03-24
尾递归可以被编译器直接优化成循环,所以你就当他是循环好了
|
|
返回顶楼 | |
发表时间:2007-03-24
尾递归T1原来有讲过,你可以搜索一下帖子.
|
|
返回顶楼 | |
发表时间:2007-03-24
simohayha 写道 尾递归T1原来有讲过,你可以搜索一下帖子.
好像没有T1这个id,然后我查找关键字 尾递归,怎么看不到查询出来的结果,只能看到 1 2 3 三页 ![]() |
|
返回顶楼 | |
发表时间:2007-03-24
又google javaeye一把 ,找到一篇楼上simohayha大大的文章 主题:
python中是否可以实现'tail-call elimination'的优化 http://www.iteye.com/topic/54253 多谢啦 |
|
返回顶楼 | |
发表时间:2007-03-24
又链到一篇文章 -主题: [探讨]通过实例再讨论TDD http://www.iteye.com/post/32289
里面有个Trustno1讲到递归是不是就是T1,先做个标记,吃饭先。谢谢楼上的simohayha |
|
返回顶楼 | |
发表时间:2007-03-24
Erlang 写道 又链到一篇文章 -主题: [探讨]通过实例再讨论TDD http://www.iteye.com/post/32289
里面有个Trustno1讲到递归是不是就是T1,先做个标记,吃饭先。谢谢楼上的simohayha 呵呵,T1就是 Trustno1,我说的就是 TDD这个帖子. |
|
返回顶楼 | |
发表时间:2007-03-24
hurricane1026 写道 不如看sicp,sicp讲得更好。
sicp是不是就是 http://mitpress.mit.edu/sicp/ 中提到的Structure and Interpretation of Computer Programs? sicp中那一章讲到什么了内容? |
|
返回顶楼 | |
发表时间:2007-03-24
simohayha 写道 Erlang 写道 又链到一篇文章 -主题: [探讨]通过实例再讨论TDD http://www.iteye.com/post/32289
里面有个Trustno1讲到递归是不是就是T1,先做个标记,吃饭先。谢谢楼上的simohayha 呵呵,T1就是 Trustno1,我说的就是 TDD这个帖子. 那个帖子看完了,得出的结论就是要学好编译原理才能弄明白尾递归。编译原理俺没学好:( 另外,里面关于TDD见解挺独到的。刚才俺得到了俺对TDD的看法:就是TDD的结果可能会影响你的设计,促使你重构,优化算法;但他并不能帮你做任何一个设计,也不能教你任何的重构,或者推导出算法等等。 TDD方法学最重要的两点就是: 1,要求程序的任何一个单元、任何一个模块或者任何一个部分或者整个程序所承担的功能、非功能要求都被独立测试; 2,要求程序的任何一个单元、任何一个模块或者任何一个部分或者整个程序所承担的功能、非功能要求在任何一个时刻都可以被独立测试,并且得出其是否正确的结论。 谁能推荐几本简单明了又经典的编译原理书?先谢过了 |
|
返回顶楼 | |