www.jammni.de

Logo - Kleiner Drache
Login
Username:

Passwort:

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

Logo - DracheHaskell-Forum

Haskell-Lerner

Gepostet:
04.11.2005 21:44

(einfache (?)) Frage zu einer Aufgabe...  
Hallo!

Ich bin ganz neu hier im Forum und würde gerne erstmal wissen, was für Leute hier antworten und wie oft hier jemand reinschaut! Es kann nämlich sein, dass ich in den nächsten Woche viele kleine Fragen haben werde, und die müssten dann recht schnell beantwortet werden, sonst lohnt es sich nicht, sie zu stellen... Also - schauen hier jeden Tag ein paar Profis rein? ;-)

So, nun zu meiner Aufgabe:
Folgender Datentyp für reguläre Ausdrücke wird definiert:

data Reg = Eps | Sym Char | Cat Reg Reg | Alt Reg Reg
deriving (Show)

Und nun soll ich eine Funktion language :: Reg -> [String] schreiben, die die Sprache berechnet, die durch einen regulären Ausdruck bezeichnet wird. Beispiel:
language abc
=> ["a","b","c"]

Ich habe bereits geschrieben:

language Eps = []
language (Sym zeichen) = [[zeichen]]

Das stimmt doch so, oder? Und dann habe ich mich versucht mit:

language (Cat (Sym a) (Sym b)) = language (Sym a) ++ (language (Sym b))
Aber das gibt mir z. B. bei language (Cat (Sym 'b') (Sym 'c')) das hier: ["b","c"] zurück, und es sollte ja eigentlich ["bc"] zurückkommen. Alle meine anderen Versuche, das hinzubekommen, haben leider nicht funktioniert. Könnte mir hier jemand einen Tipp geben?

Und dann fehlt ja noch etwas - ich habe es probiert mit:

language (Alt (Sym a) (Sym b)) = (Sym a)(language (Sym b))reverse(Alt (Sym b) (language (Sym a)))

Aber das gibt mir erstens etliche Fehlermeldungen zurück, weil irgendein Typ nicht stimmt, und außerdem bin ich mir im Moment gar nicht mehr sicher, was language (Alt irgendwas) überhaupt zurückgeben soll... Auch hier würde ich mich über Hilfe freuen.

Viele Grüße
Haskell-Lerner
Smilie
Zum Seitenanfang    
 
Jammni

Gepostet:
06.11.2005 16:49

   
Naja, eigentlich hat von Haskell eigentlich nur Jacke Ahnung. Und die hat wohl erst ab heute Abend wieder Zeit. Normalerweise kriegst du aber recht zügig ne Antwort.

Aber bei deinen Haskell-Problemen kann ich dir leider nicht helfen :-(
Zum Seitenanfang Homepage   ICQ    
 
Jacke

Gepostet:
06.11.2005 22:49

   
also concat verbindet zwei listen...

data Reg = Eps | Sym Char | Cat Reg Reg | Alt Reg Reg


language Eps = []
language (Sym zeichen) = [[zeichen]]



language (Cat (Sym a) (Sym b)) =[concat( language (Sym a) ++ (language (Sym b)))]

das müßte eigentlich das machen was du wolltest

wenn du mir verrätst was alt machen soll dann kann ich dir da auch weiter helfen...

ps: sorry das ich erst so spät geantwortet habe aber ich war dieses we leider nicht in der nähe meines pcs werd aber jetzt jeden tag ein paar mal reinkucken falls du fragen hast

gruß jacke <smilie:zahnluecke>
Zum Seitenanfang