我有一个使用显式递归的Haskell函数,代码如下:
请注意,递归调用取决于之前步骤中计算出的值(由
是否有一种方法可以消除显式递归?如果有,该如何实现?
f :: [a] -> [a]
f (a:b:xs) = g a b : f (g a b : xs)
where
g :: a -> a -> a
f (_:[]) = []
f [] = []
请注意,递归调用取决于之前步骤中计算出的值(由
g
计算得出)。是否有一种方法可以消除显式递归?如果有,该如何实现?