Big*_*ter 3 recursion haskell list infinite let
可能有人解释这与下面的输入一小段代码的行为:[[1,2],[3,4]]?
infiniteList ls = let v = ls ++ v
in concat v
Run Code Online (Sandbox Code Playgroud)
结果是一个无限的列表,但我没有意识到为什么.我明白了诀窍在于:
ls ++ v
Run Code Online (Sandbox Code Playgroud)
但是,因为我们没有定义变量的初始值,所以如何正常工作v?
要评估v,只需将其替换为其定义:
v = ls ++ v
= ls ++ ls ++ v
= ls ++ ls ++ ls ++ v
= ls ++ ls ++ ls ++ ls ++ v
= ls ++ ls ++ ls ++ ls ++ ls ++ v
= ls ++ ls ++ ls ++ ls ++ ls ++ ls ++ v
Run Code Online (Sandbox Code Playgroud)
显然,这永远不会结束.
| 归档时间: |
|
| 查看次数: |
63 次 |
| 最近记录: |