为什么这个函数会产生无限循环?

dor*_*mon 0 recursion haskell list

我正在尝试解决我在网上找到的Haskell课程的练习,对于这个问题,我有以下实现:

reverse ::
  List a
  -> List a
reverse Nil = Nil
reverse (x :. xs) = let l = (reverse xs) in l ++ (x:.Nil)
Run Code Online (Sandbox Code Playgroud)

List被定义为:

data List t =
  Nil
  | t :. List t
  deriving (Eq, Ord)
Run Code Online (Sandbox Code Playgroud)

似乎这个函数里面有一个无限循环.但我找不到原因.你能开导我吗?

ama*_*loy 5

这是练习册中reverse定义的正确实现List.如果在某个地方存在无限循环,则可能在您的实现中(++).