www.jammni.de

Logo - Kleiner Drache
Login
Username:

Passwort:

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

Logo - DracheHaskell-Forum

Opa114

Gepostet:
15.06.2008 14:35

Ternärbaum und Blätter ersetzen mit map?  
Hallo,

mir tut sich gerade ein Problem auf und zwar folgendes: Ich habe einen ternären Baum und möchte nun mit Hilfe einer Map-Funktion alle Blätter im Baum ersetzen. Die Blätter in dem Baum sind Strings und sollen durch diesen Datentyp erstetzt werden: data Farbe = Rot | Gelb | Blau deriving (Eq,Show), d.h. hat ein Blatt den String "Rot", soll Rot aus dem Datentyp Farbe eingesetzt werden, usw.

Eine Funktion die auf einem Baum mapt habe ich schon, aber wie schreibe ich die zu mapende Funktion, die mir die Strings ersetzt?

Vielleicht hat ja jemand Tipps und ein paar Hilfestellungen für mich ;-)

Matthias
Zum Seitenanfang    
 
Siracusa

Gepostet:
15.06.2008 17:31

   
Hallo,

also das Stringersetzen ist einfach:
toColor :: String -> Farbe
toColor color = case color of
"Rot" -> Rot
"Gelb" -> Gelb
...

Es geht auch noch komfortabler, wenn auch weniger flexibel:
data Farbe = Rot | ... deriving (Eq, Show, Read)

toColor :: String -> Farbe
toColor = read

Beide Versionen funktionieren aber nur, falls keine fehlerhaften Farben eingegeben werden, z.B. "Gleb". Sollen fehlerhafte Eingaben abgefangen werden, könnte man das Ergebnis in einem Maybe kapseln.


Viele Grüße,

Siracusa
Zum Seitenanfang    
 
Opa114

Gepostet:
15.06.2008 18:23

   
ah cool, danke. Ich werde das nachher mal ausprobieren. Interessant, dass das String ersetzen doch so einfach ist ;-)

funktioniert alles super - habe es eben getestet - danke!!!
Zum Seitenanfang