haskell模式匹配编号(解构)

时间:2020-10-30 09:24:22

标签: haskell pattern-matching

Haskell中的模式匹配可以通过以下方式用于解构数字:

f (n + 1) = n

我希望ex的前任: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

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

1 个答案:

答案 0 :(得分:4)

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

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

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