6
A
回答
9
我知道,我们通常要求的内容被复制,但没有简短的回答你的问题。 http://www.cs.indiana.edu/~dyb/pubs/fixing-letrec.pdf
8
号仅仅因为一个功能特征与幕后必要的代码,不会使功能势在必行实现。我们的计算机器都是必不可少的;所以在某些时候,所有的功能代码都必须通过翻译成命令式的代码来实现!
最关键的事情在这里明白的是:函数式编程涉及接口,不实施。一段代码是功能性的,如果是代码本身是无法观察任何副作用,即使副作用实际上发生在幕后。也就是说,如果您检查相同的绑定同一个变量多次的价值,你会得到相同的值,即使这个值,在幕后,是由使用的set!
放在那里。
在letrec
的情况下,这里有一个小难题:如果任何在letrec
绑定的评估导致另一个被derefenced结果是不确定的。所以,这个代码的结果是不确定的:
(letrec ((foo bar)
(bar 7))
(cons foo bar))
的foo
在letrec主体的价值是不确定的。以下的结果,在另一方面,被定义:
(letrec ((foo (lambda() bar))
(bar 7))
(cons (foo) bar))
这是因为评估lambda
捕获参考吧,但直到闭合在主体执行的实际值未查找。
相关问题
- 1. 如何在不使用AppDomains的情况下实现.net插件?
- 2. 如何在不使用ListView的情况下实现CursorLoader?
- 3. 如何在不使用指针的情况下实现链表?
- 4. 如何在不使用^的情况下实现XOR?
- 5. Microsoft如何在不设置“set”的情况下实现自动化属性? (c#)
- 6. 如何在不使用ListActivity的情况下实现ListView? (只使用活动)
- 7. 在不使用密码的情况下在Java中实现RSA
- 8. 如何在不使用已弃用的Notification类的情况下实现startforeground?
- 9. 在不使用注释的情况下实现SOAPHandler @HandleChain
- 10. 在不使用Modernizr的情况下实现这个结果?
- 11. 如何在不使用DRBD的情况下实现Rabbitmq高可用性?
- 12. 如何在不使用android的情况下实现android应用程序?
- 13. 如何在不使用dragdetect侦听器的情况下在Slider上实现dragdetection?
- 14. 这个函数如何在不递归的情况下实现?
- 15. 如何在不崩溃编译器的情况下实现MutableCollectionType?
- 16. 如何在不进行轮询的情况下实现std :: when_any?
- 17. 如何在不扩展的情况下实现listactivity
- 18. 如何在不首先实现的情况下测试接口?
- 19. 如何在不暴露字段的情况下实现equals?
- 20. 如何在不预览的情况下实现相机程序?
- 21. 如何在不使用TempData的情况下实现相同的结果
- 22. 如何在一种情况下实现具有显着不同实现的类?
- 23. Android:如何在不使用地图活动的情况下实现com.google.android.gms.maps.MapView
- 24. 如何在不使用混合列表的情况下实现此功能?
- 25. 如何在不使用STL的情况下实现C++字典数据结构
- 26. Erlang如何在不使用OS线程的情况下实现并发性?
- 27. 如何在不使用表格的情况下实现表格布局?
- 28. 如何在不使用partialloop视图助手的情况下实现ZF2视图?
- 29. 如何在不使用static/global变量的情况下实现singleton?可能?
- 30. Cosmicmind/Material:我如何在不使用AppDelegate.swift的情况下实现PageTabBarController?
The Dybvig et al。纸是一个很好的。几年前还有一个很好的[关于Lambda终极版的讨论](http://lambda-the-ultimate.org/node/2971),讲述了如何在lambda方面实现letrec。 (说了这么多,我同意sacundim的评论,“仅仅因为功能特征是在幕后执行命令性代码,并不能使这个功能成为必需的”)。 –