Haskell GHCi:无法通过自定义类型进行模式匹配
我已经为Int类型的向量定义了一个自定义类型:Haskell GHCi:无法通过自定义类型进行模式匹配,haskell,types,pattern-matching,ghci,Haskell,Types,Pattern Matching,Ghci,我已经为Int类型的向量定义了一个自定义类型: data Vector = Vector Int Int Int 现在我想定义一个函数,将一个向量添加到另一个向量,但不知怎么的,语法是不正确的,尽管它与中使用的非常相似 首先尝试使用前缀表示法: Prelude> let vp :: Vector -> Vector -> Vector Prelude| vp (Vector a b c) (Vector d e f) = Vector (a+d) (b+e)
data Vector = Vector Int Int Int
现在我想定义一个函数,将一个向量添加到另一个向量,但不知怎么的,语法是不正确的,尽管它与中使用的非常相似
首先尝试使用前缀表示法:
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 ‘(’
Prelude>让vp::Vector->Vector->Vector
前奏曲vp(向量a b c)(向量d e f)=向量(a+d)(b+e)(c+f)
:33:1:输入“vp”时分析错误
第二次尝试,使用中缀符号:
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 ‘(’
Prelude>让vp::Vector->Vector->Vector
前奏曲(向量abc)`vp`(向量def)=向量(a+d)(b+e)(c+f)
:35:1:分析输入“(”上的错误
我使用的是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| :}
这只是一个缩进错误
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| :}
是的,谢谢你。另一方面,如果GHCi像python一样抛出缩进错误…是的,谢谢你。另一方面,如果GHCi像python一样抛出缩进错误。。。