www.jammni.de

Logo - Kleiner Drache
Login
Username:

Passwort:

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

Logo - DracheHaskell-Forum

innasa

Gepostet:
14.01.2005 11:01

Haskell Datentyp  
Hallo, ich soll einen Datentyp Expression deklarieren der folgende Konstruktoren hat:

1. Es soll ein String eingegeben werden (Variable)
2. Es soll eine Int-Zahl eingegeben werden können (Konstante)
3. die üblichen Verknüpfungen (Summe, Differenz, Produkt und Quotient)

Mein Anfang:

data Expression a = String a | Int a | Expression a + Expression a ...

Das funktioniert so aber leider nicht, hat jemand einen tipp?

Danke
Zum Seitenanfang    
 
Jammni

Gepostet:
14.01.2005 23:40

   
Erstmal Sorry wegen deiner vielen Posts, aber das liegt einfach nur an dem buggy-Forum... also brauchst dir keine Sorgen machen.

Und Jacke kümmert sich auch gleich um dein Problem.
Zum Seitenanfang Homepage   ICQ    
 
Jacke

Gepostet:
14.01.2005 23:43

   
also ich würde es folgendermaßen machen

data Expr = Lit Int| Var Var | Op Ops Expr Expr
data Ops = Add | Sub | Mul | Div
type Var = Char

gruß jackeSmilie
Zum Seitenanfang    
 
innasa

Gepostet:
16.01.2005 14:14

Weiteres Problem  
Hallo, nun soll ich eine exprToSTring schreiben, die aus einer expression einen String generiert (zum ausgeben)

Ich habe die Funktion show und den "++"-Infix zur verfügung. Wie soll ich das machen?

PS: Habt ihr nen link zu nem guten Haskell-Tutorium oder evtl. ne Buchempfehlung?

Danke!
Zum Seitenanfang    
 
Jacke

Gepostet:
17.01.2005 13:46

   
es gibt leider keinen deutschen tutorials...und ich komm im moment mit dem hier auf der seite nich voran...studieren hält einen ganz schön auf trab...
als buch kann ich dir: "Einführung in die Programmierung mit Haskell von Manuel Chakravarty, Gabriele Keller" empfehlen

auf der hugs seite gibts nen ganz gutes tutorial (in englisch)
also und nun zu deiner frage:
ich geh mal davon aus das sich um einen nummerische expr handelt für alle anderen fälle funktioniert es aber analog dazu
data Expr= Lit Int |
Add Expr Expr |
Sub Expr Expr

show::Expr-> String
show (Lit n)= show n
show (Add e1 e2)="("++show e1++"+"++show e2++")"
show (Sub e1 e2)="("++show e1++"-"++show e2++")"

Smilieund nun zur nächsten frage gruß jacke
Zum Seitenanfang