haskell模式匹配数字(解构)



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中,它不起作用:

前奏曲>f(n+1(=n:4:12:错误:模式中的分析错误:n+1

也许需要添加一些选项?我可以用这种方式使用模式匹配吗?

使用您引用的wiki中的示例:

{-# LANGUAGE NPlusKPatterns #-}
fac :: Integral a => a -> a
fac 0 = 1
fac n'@(n + 1) = n' * fac n

这在2010年从该语言中删除,但Haskell仍然是一种非常可配置的语言。:(

最新更新