【发布时间】:2012-12-01 22:33:49
【问题描述】:
在 Richard Bird 的书“Introduction to Functional Programming Using Haskell”第二版中做练习。在以下代码的最后一行,我得到了错误:
"Parse error in pattern (n `times` Succ m)
请注意,times 的定义中接受了相同的模式(m 和 n 互换)。为什么会出现此错误?
data Nat = Zero | Succ Nat
deriving (Eq, Ord, Show)
plus :: Nat -> Nat -> Nat
m `plus` Zero = m
m `plus` Succ n = Succ (m `plus` n)
m `times` Zero = Zero
m `times` Succ n = (m `times` n) `plus` m
divide :: Nat -> Nat -> Nat
Zero `divide` m = Zero
(n `times` Succ m) `divide` n = Succ m
【问题讨论】:
-
提示:我猜 Richard Bird 先生希望您“除”一个忽略余数的总函数(当然,n 除零除外)。
标签: haskell pattern-matching parse-error