在Haskell中,模式匹配能否用于以这种方式分解数字:
f (n + 1) = n
我期望找到前置条件,例如: f 6 = 5, f 5 = 4等。
我在这里发现了这种模式匹配的用法: https://wiki.haskell.org/Continuation
facCPS :: a -> (a -> r) -> r
facCPS 0 k = k 1
facCPS n'@(n + 1) k = facCPS n $ \ret -> k (n' * ret)
facCPS 4 (+ 2) :: Integral a => a
但是在我的ghci中它不起作用:
Prelude> f (n + 1) = n :4:12: 错误:模式匹配中的解析错误:n + 1
也许需要添加一些选项?我可以以某种方式使用模式匹配吗?
f n = n - 1
将具有完全相同的效果,并且不需要语言扩展。(但您可能需要重写递归的基本情况。) - Robin Zigmond