如何从执行该功能的无穷大中阻止Haskell?
splitList i "" = []
splitList i str = let (x, y) = splitAt i str
in x : splitList i x
答案 0 :(得分:4)
尝试逐步完成GHCi中的实现:
i
在下一个传递中,x
以x
和"He"
递归调用自己,其中Prelude> str = x
Prelude> let (x, y) = splitAt i str
Prelude> x
"He"
Prelude> y
""
为splitList
:
i
在第三次传递中,x
再次使用x
和firstname
递归调用自身。请注意,lastname
在第一次和第二次呼叫之间没有变化。你现在看到无限递归吗?