2012-10-08 69 views
3

根據數據類型的定義,我有一個問題: 可以在定義中使用符號或數字嗎? 舉例來說,如果我想創建一個數據類型爲低,等號當然haskell自己的數據類型 - 在數據類型定義中使用符號或數字

data Signs = Lo | Eq 

的下面的代碼工作的構造羅代表「<」和構造函數公式爲「=」。

但我不能使用「真實」的跡象。例如,下面的代碼將無法正常工作

data Signs = Lo "<" | Eq "=" 
type Signs = "<" | "=" 
type MyInt = '1' | '2' 
data MyInt = One '1' | Two '2' 

所以我想知道是否有使用定義中「真正的」標誌和編號的可能性。如果有一個,如果你能告訴我它是如何工作的話,那將會很好。 ;)

+0

你想他們只是爲了方便起見? – huon

+0

@dbaupp:不只是爲了方便,但我很想知道它。對我來說,像「Int」這樣的內置數據類型很難重新實現,這有點奇怪。或者,你會如何嘗試實現等同於「Int」的數據類型「data MyInt = ...」? – jimmyt

回答

2

運算符標識符前綴爲:可用於數據構造函數。

data Signs = (:<) | (:=) 

,如果他們是零元,然後AFAIK你必須保持的括號:

[(:<), (:=)] 

您可以使用數字,但第一個字符必須是大寫字母。

data MyInt = N1 | N2 

http://www.haskell.org/onlinereport/lexemes.html

+2

所有這一次,我假設一箇中綴數據構造函數必須採取兩個參數......我錯了。 – dave4420

+0

非常感謝。 ;) – jimmyt

+0

@jimmyt不要忘記標記答案是正確的! (綠色複選標記) – Pubby