2014-09-13 51 views
5

我剛剛開始Haskell中,我一直試圖做一個簡單的數字數據類型,其中有一個單一的詮釋,象這樣:獲得「不解析」從Prelude.read

data Number 
    = Num Int 
    deriving (Read, Show) 

然後我試圖做read "1234" :: Number希望這會給像Num 1234,但我似乎得到一個「例外:Prelude.read:沒有解析」,而是。還有什麼我失蹤的?

回答

9

您獲得的實例將給read "Num 1234" = Num 1234

這是一個預計,中Read實例的行爲,但如果你真的想要一個不同的行爲,你就必須實現readNumber自己(你可以重新使用Int的,雖然)。

+5

+1 - @ Sp3000你應該看到這是一種與'show'相反的感覺 – Carsten 2014-09-13 11:16:58

+0

謝謝你們,這讓我更有意義 – Sp3000 2014-09-13 11:26:09