我正在将一些程序从Standard ML翻译成Haskell一个类,我对Haskell解析这种模式匹配的方式感到困惑.
我有这种数据类型:
data Term = A | B
| F Term | G Term | H Term Term
| Var String
deriving (Show)
Run Code Online (Sandbox Code Playgroud)
这是我定义的函数的一部分:
unify :: [(Term, Term)] -> Bool
-- argument represents a list of term equations,
-- result indicates whether they have a solution
unify nil = True
unify ((A, A):eqns) = unify eqns
unify ((B, B):eqns) = unify eqns
unify ((F(t1), F(t2)):eqns) = unify((t1,t2):eqns)
unify ((G(t1), G(t2)):eqns) = unify((t1,t2):eqns)
unify ((H s1 t1, H s2 t2):eqns) …Run Code Online (Sandbox Code Playgroud)