2012-10-06 29 views

回答

3

不,沒有 - 正如你所說的,他們必須是大寫的。

我會去與

data Var = Var_A | Var_B | ... | Var_Z 
     | Var_a | Var_b | ... | Var_z 

V_A | V_B

另一種方法是使用

newtype Var = Var Char 

但失去了一些安全的,但確實是發放用於讀取和顯示。您必須確保在您的代碼中沒有無效的Char最終成爲Var s。

data Var_A | ...是一個很多的樣板代碼,所以你可以只做A到D,然後寫這些代碼只是用這些字母,然後自己做一點練習來編寫一個Haskell程序來編寫源代碼數據類型和你的解析函數!你會在Haskell中學習一些關於字符串操作的方法。)

((這裏有一個模板哈斯克爾的設計,可以爲你做樣板工作,但這是相當先進的,你應該首先學習你的字符串操作,而且,當我談論這個話題時,一旦你真的知道你在做什麼,看看Scrap Your Boilerplate,這是一些非常先進的寫技術,聰明的代碼,你需要更多的Hask ELL的經驗,你去,雖然之前。))

4

一種解決方法是隻需

data Var = Var Char 

雖然根據需要Var 'c'Var 'D'將填充型,可惜Var '%'可以填充它。有兩種方法可以解決這個問題。一種是像你一樣枚舉所有構造函數:

data Var = A | B | C -- continues to Z 
     | SmallA | SmallB | SmallC -- continues to z 

的另一種方式只讓正確的值進入類型是使用smart constructors

相關問題