GHCi:无法对自定义类型进行模式匹配
GHCi: cannot pattern match over custom type
我已经为 Int 类型的向量定义了自定义类型:
data Vector = Vector Int Int Int
现在我想定义一个函数来将一个向量添加到另一个向量,但语法不正确,尽管它与 Learn You a Haskell For Great Good!.
中使用的语法非常相似
第一次尝试,使用前缀符号:
Prelude> let vp :: Vector -> Vector -> Vector
Prelude| vp (Vector a b c) (Vector d e f) = Vector (a+d) (b+e) (c+f)
<interactive>:33:1: parse error on input ‘vp’
第二次尝试,使用中缀符号:
Prelude> let vp :: Vector -> Vector -> Vector
Prelude| (Vector a b c) `vp` (Vector d e f) = Vector (a+d) (b+e) (c+f)
<interactive>:35:1: parse error on input ‘(’
我正在使用 GHCI v7.8.4
这只是一个缩进错误
Prelude> data Vector = Vector Int Int Int deriving Show
Prelude> :{
Prelude| let vp :: Vector -> Vector -> Vector
Prelude| vp (Vector a b c) (Vector d e f) = Vector (a + d) (b + e) (c + f)
Prelude| :}
Prelude> vp (Vector 1 2 3) (Vector 4 8 12)
Vector 5 10 15
工作正常,
Prelude> :{
Prelude| let vp :: Vector -> Vector -> Vector
Prelude| Vector a b c `vp` Vector d e f = Vector (a + d) (b + e) (c + f)
Prelude| :}
我已经为 Int 类型的向量定义了自定义类型:
data Vector = Vector Int Int Int
现在我想定义一个函数来将一个向量添加到另一个向量,但语法不正确,尽管它与 Learn You a Haskell For Great Good!.
中使用的语法非常相似第一次尝试,使用前缀符号:
Prelude> let vp :: Vector -> Vector -> Vector
Prelude| vp (Vector a b c) (Vector d e f) = Vector (a+d) (b+e) (c+f)
<interactive>:33:1: parse error on input ‘vp’
第二次尝试,使用中缀符号:
Prelude> let vp :: Vector -> Vector -> Vector
Prelude| (Vector a b c) `vp` (Vector d e f) = Vector (a+d) (b+e) (c+f)
<interactive>:35:1: parse error on input ‘(’
我正在使用 GHCI v7.8.4
这只是一个缩进错误
Prelude> data Vector = Vector Int Int Int deriving Show
Prelude> :{
Prelude| let vp :: Vector -> Vector -> Vector
Prelude| vp (Vector a b c) (Vector d e f) = Vector (a + d) (b + e) (c + f)
Prelude| :}
Prelude> vp (Vector 1 2 3) (Vector 4 8 12)
Vector 5 10 15
工作正常,
Prelude> :{
Prelude| let vp :: Vector -> Vector -> Vector
Prelude| Vector a b c `vp` Vector d e f = Vector (a + d) (b + e) (c + f)
Prelude| :}