www.jammni.de

Logo - Kleiner Drache
Login
Username:

Passwort:

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

Logo - DracheHaskell-Forum

Tokolosh

Gepostet:
05.06.2011 14:13

Eigene Fold-Funktion  
Hallo, ich hab ein kleines Problem:

Folgendes ist gebeben:


data A = A String [A] |
B String Integer
deriving Show


Nun soll ich daraus ne Foldfunktion darstellen. So weit eigentlich kein Problem, nur
weiß ich nicht wie ich an der Liste weitermachen soll. Also bei [A]. Hab ich nun einen Denkfehler oder warum geht es nicht (ohne [A] geht es)
Falls jemand eine Idee hat, bin ich dafür sehr dankbar.

Zum Seitenanfang    
 
Landei

Gepostet:
05.06.2011 19:46

   
Wie soll denn die Typ-Signatur von fold aussehen?

Ich habe mal ein wenig rumgespielt, aber ich glaube nicht, dass es so gedacht war...


fold :: (String -> [Integer] -> Integer) -> A -> Integer
fold f (B string int) = f string [int]
fold f (A string as) = f string (map (fold f) as)
Zum Seitenanfang    
 
deinTutor

Gepostet:
06.06.2011 13:14

   
Hi Tokolosh,

hier hast du also deine Lösungen fürs Tut her :-)

Im Script 5 auf Seite 47 ist ja ein kleiner Leitfaden. Also für jeden Konstruktor der mind. einen Parameter hat brauchst du eine Funktion die alle Parameter verarbeiten kann.

Dann musst du dir noch überlegen wie man mit dem [A] umgeht. Es wurde in der Vorlesung auch angesprochen, dass du hierfür eine Map brauchst.

Jetzt kannst du dir schonmal den Typ überlegen. Also irgendwie zwei Funktionen, dann den Baum und am Schluss kommt was raus...

Grüße

deinTutor
Zum Seitenanfang