Haskell,将列表拆分为指定的块,从而导致无限循环

时间:2018-03-08 05:50:56

标签: string haskell split char chunks

如何从执行该功能的无穷大中阻止Haskell?

splitList i ""  = []
splitList i str = let (x, y) = splitAt i str
                  in x : splitList i x

1 个答案:

答案 0 :(得分:4)

尝试逐步完成GHCi中的实现:

i

在下一个传递中,xx"He"递归调用自己,其中Prelude> str = x Prelude> let (x, y) = splitAt i str Prelude> x "He" Prelude> y "" splitList

i

在第三次传递中,x再次使用xfirstname递归调用自身。请注意,lastname在第一次和第二次呼叫之间没有变化。你现在看到无限递归吗?