Gepostet: |
Lambdaausdruck visualisieren | ||||||||||
>data LExpr = Var String -- Variable > | App LExpr LExpr -- Funktionsapplikation > | Lam String LExpr -- Lambda-Abstraktion > deriving (Eq) >instance Show (LExpr) where > showsPrec _ (Var x) = showString x > showsPrec _ (App a b) = showsPrec 9 a . (showsPrec 9 b) > showsPrec p (Lam a b) = showParen (p>0)(showString ( "\"" ++ a ).showsPrec 1 b) Also bei der Eingabe von App (Lam "x" (App (Var "x") (Var "x"))) (Var "y") sollte (\x -> x x) y rauskommen. Rauskommen tut aber ("xxx)y . Wo liegt der Fehler??? Meine Vermutung ist, dass ich keine Ahnung habe was ich als int bei showPrec (0<int<11) x eingeben muss. Aber auch " sollte nicht vorkommen, aber wie kann ich das machen? Wenn man showString verwendet bekommt man doch immer sowas mit ". Vielen Dank im Voraus |
|||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
>data LExpr = Var String -- Variable > | App LExpr LExpr -- Funktionsapplikation > | Lam String LExpr -- Lambda-Abstraktion > deriving (Eq) >instance Show (LExpr) where > showsPrec _ (Var x) = showString (" " ++ x ) > showsPrec _ (App a b) = showsPrec 10 a . (showsPrec 11 b) > showsPrec p (Lam a b) = showParen (p>0)(showString ( "\\" ++ a++ "->" ).showsPrec hab was rumprobiert..... Warum das funktioniert weiß ich nicht. |
|||||||||||
Zum Seitenanfang | |||||||||||