Typage
Types d'expressions
Donnez les types des expressions suivantes :
Types de fonctions
Donnez le type des fonctions suivantes :
Types plus complexes
Pour chacune des questions suivantes, écrivez le type le plus général correspondant à la fonction décrite.
-
data Expr = Val Float | Add Expr Expr | Mul Expr Expr eval (Val n) = n eval (Add x y) = eval x + eval y eval (Mul x y) = eval x * eval y
-
data Graph a = Graph [(a, [a])] neighbors x (Graph edges) = concat [ns | (v, ns) <- edges, v == x]
-
data State = State String data Transition = Transition State State nextState _ [] = Nothing nextState orig@(State s) (Transition (State from) to : ts) | s == from = Just to | otherwise = nextState orig ts