2017-02-23 28 views
0

我爲int類型的向量來定義一個自定義類型:GHCI:不能在自定義類型的模式匹配

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

回答

3

這僅僅是一個壓痕錯誤

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

是的,謝謝你。另一方面,如果只有GHCi像python那樣引起縮進錯誤...... –

相關問題