为什么从一-O开始就充分懒惰?我发现自己不相信SPJ的"函数式编程语言的实现"中的推理.声称是在
f = \y -> y + sqrt 4
Run Code Online (Sandbox Code Playgroud)
sqrt 4每次f输入都会不必要地重复,所以我们应该将它浮动到lambda之外.我同意这一点,但是因为我们已经看到了这种转变导致的大问题我不相信它是值得的.在我看来,这种转换的好处可以单方面获得**只有本地代码更改,而想要它的程序员应该手动实现它.
你能说服我吗?是full-laziness居然真的有用吗?如果你能提供需要多边合作或非地方转型的手工实施的例子,我将特别相信.
**与内联和流融合等优化不同,手动实现需要模块之间的多边合作和非本地代码更改