我做了以下简单的假设,以了解在Haskell名单懒惰的评价,名单懒惰评估在Haskell
head [1, 2] -- expr1
head [1 .. 2] -- expr2
head [1 ..] -- expr3
head . (1 :) $ [] -- eval1
head . (1 :) . (2 :) $ [] -- eval2
我想这expr3
想eval1
懒洋洋地评估,如何expr1
和expr2
?
一般来说,
- 是懒惰的评价在Haskell在编译和运行时间的技术?
- 它在哪里说效率好,但很难推理,按时,空间复杂性或程序逻辑?
我不明白你的要求。看起来你试图推理表达式的评估,但我不知道你在说什么。在Google上学习更多的关键字是“WHNF”。 – kirelagin 2015-04-02 22:36:23
如果有人试图直接回答你的问题,那么答案就是:“你的例子中没有写出任何表达式。 – kirelagin 2015-04-02 22:38:50
你的意思是'head [1,2]'直接编译为'1'吗? – sof 2015-04-02 22:47:33