www.jammni.de

Logo - Kleiner Drache
Login
Username:

Passwort:

Daten merken
Auto-Login
Registrieren
 
Online
niemand
 
Forumsuche
Suche nach:

Logo - DracheHaskell-Forum

Dogge

Gepostet:
10.06.2013 23:43

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    
 
Dogge

Gepostet:
10.06.2013 23:53

   
>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