haskell - 在这个 haskell 示例中 loeb 如何终止?

标签 haskell

来自 this Youtube video :

> let loeb fs = xs where xs = fmap ($ xs) fs
> loeb [length, (!! 0)]
[2,2]
xs这里是递归定义的,而 loeb 如何终止超出了我的范围。

最佳答案

尝试一下:

loeb [length, (!! 0)]
= xs where xs = fmap ($ xs) [length, (!! 0)]
= xs where xs = [length xs, xs !! 0]

所以当然length xs只是 2,所以 xs 的第一个元素( length xs ) 也是 2。

记住:length xs不需要评估列表的项目:
length [undefined, undefined] = 2

关于haskell - 在这个 haskell 示例中 loeb 如何终止?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29250967/

相关文章:

haskell - 合并 Haskell 中相似的列表列表

haskell - 递归 Haskell - 最小值函数

haskell - 为什么湿在 DPH 程序中得到 "Can' t vectorise expression GHC.Prim.Int#"错误?

haskell - 如果 JVM 语言编译过程有一个像 Haskell 一样的 STG 阶段,会有什么变化?

haskell - 为什么 Shake 建议禁用空闲垃圾收集?

haskell - 函数调用后秒差距意外字符

haskell - 如何使用 Text.Parsec.Expr 中的 buildExpressionParser 来解析这种语言?

haskell - 特定函数名称 'it' 会发生什么?

haskell - 不在范围 : type constructor or class 内

haskell - 一次将函数映射到 Haskell 2 个元素中的列表