2014-09-13 6 views
5

Ich habe Erste Schritte nur Haskell, und ich habe versucht worden, eine einfache Datentypen Zahlen zu machen, die wie so ein einzelnes Int hat:„keine Parse“ von Prelude.read

data Number 
    = Num Int 
    deriving (Read, Show) 

ich dann versucht zu tun read "1234" :: Number in der Hoffnung, dass würde so etwas wie Num 1234 geben, aber ich scheine eine "Ausnahme: Prelude.read: no Parse" stattdessen zu bekommen. Gibt es noch etwas, das ich vermisse?

Antwort

9

Die von Ihnen abgeleitete Instanz würde read "Num 1234" = Num 1234 ergeben.

Dies ist das Verhalten einer für Instanzen von Read erwartet, aber wenn Sie wirklich ein anderes Verhalten wollen, werden Sie read für Number selbst implementieren müssen (Sie können Int ‚s wieder zu verwenden, obwohl).

+5

+1 - @ Sp3000 sollten Sie dies als eine Art inverse zu 'show' sehen – Carsten

+0

Danke Jungs, das macht viel mehr Sinn – Sp3000

Verwandte Themen