2016-04-22 51 views
6

我通過some Haskell documentation去,發現語句如何使用類的構造函數中綴形式

你可以聲明(適用於類型和數據)構造函數是一箇中綴操作符,這樣就可以讓你的代碼更具可讀性。

我能夠使用數據構建器中綴形式象下面這樣:

Prelude> data List a = Empty | a :-> (List a) deriving Show 
Prelude> 
Prelude> let var1 = 10 :-> Empty 
Prelude> let var2 = 20 :-> var1 
Prelude> let var3 = 30 :-> var2 
Prelude> 
Prelude> var1 
10 :-> Empty 
Prelude> 
Prelude> var2 
20 :-> (10 :-> Empty) 
Prelude> 
Prelude> var3 
30 :-> (20 :-> (10 :-> Empty)) 

我的問題是如何使用類型構造中綴形式,有人可以給我一個例子就明白了這一點?

+0

'詮釋\'要麼\'String'? –

回答

7
> :set -XTypeOperators 
> data a :-> b = C (a -> b) 
> :t C id 
C id :: b :-> b 

請記住,它的名稱必須以 :(大致, :被認爲是 「大寫」)啓動。

否則,請使用反引號,如a `T` b

4

爲了擴大對@志的回答,最近GHC版本的TypeOperators語法已經有所改變:類型構造函數的名稱,否則將綴類型變量名稱(即符號沒有前導:)仍列爲類型構造的名字,這意味着下面的代碼工作,並定義中綴式構造+

{-# language TypeOperators #-} 

data a + b = L a | R b 
相關問題