nehmen wir mal einen datentyp aus der vorlesung:
"data Nats = Zero | Succ Nats deriving Show"
dieser datentyp heißt Nats und hat 2 konstruktoren. zum einen den parameterlosen konstruktor Zero, zum anderen den konstruktor Succ, der als parameter ein "objekt" vom typ Nats erwartet. wenn man nun eine funktion f::Nats->Int erzeugen möchte, könnte die beispielsweise wie folgt aussehen:
f::Nats->Int
f Zero=0
f Succ x=1 + f x
so ähnlich muss deine funktion dann auch aussehn...
edit: zur erläuterung: ein aufruf von f Zero führt nun also zu 0, ein aufruf von f Succ (Succ (Succ Zero)) wird wie folgt ausgewertet:
f Succ (Succ (Succ Zero))=1+ f Succ (Succ Zero)=1+1+f Succ Zero=1+1+1+f Zero=1+1+1+0=3
