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| :}