我想(->)
在 Haskell 中写一个阶乘箭头。我不明白如何将递归转换为loop
. 我已经设法loop
为我的阶乘创建了一个固定点,但现在 lambda 抽象存在问题,我无法翻译。
loop f b = let (d, c) = f (d, b) in c
g = \(f, x) -> (\x -> if x == 0 then 1 else x * f (x - 1), f x)
main = print $ loop g 5
有一篇关于在转换流的另一个箭头中编写阶乘的文章:[a] -> [b]
,但我感兴趣的不是这种情况。我正在寻找的更像是那个。
如何在(->)
箭头中写阶乘?