Gepostet: |
Aufgabenstellung: Signatur passt nicht | ||||||||||
Hallo, Ich wende mich mit einem neuen Problem an Euch. Ich soll etwas Programmieren, dass in einem Dateiformat die Bytes zählt Hierbei geht es um sog. Container. Ein Container ist definiert als: data Container = Dir String Erstellung [Container] | -- String steht für den Namen, Erstellung für das Datum File String Int Erstellung Extension -- String steht für den Namen, Int für die Groeße, Extension ist eine Dateiendung Mein Auftrag nun: Ich soll eine Funktion zaehleBytes erstellen. Sie soll die Summe der Größen aller Dateien zaehlen Diese soll folgende Signatur haben: zeahleBytes:: Container -> Int dazu gibt es drei Konstanten, deren korrekte Werte Ausgegeben werden sollen. Die Signaturen lauten: Aufgabe1:: Container Aufgabe2:: Container Aufgabe3:: [Container] Die ersten zwei Aufgaben funktionieren tadellos, aber ich bekomme den dritten Fall einfach nicht hin - Signatur passt (natürlich) nicht. Wie kann ich das Problem lösen/umgehen? Bisheriger Quelltext --Aufgabe 11b zeahleBytes:: Container -> Int zaehleBytes (File _ a _ _) = a -- Umwandlung in Int-Wert zaehleBytes (Dir _ _ []) = 0 -- abbruchbedingung der Rekursion zaehleBytes (Dir _ _ (c:cs) = zeahleBytes (c) + zaehleBytes (Dir "dummy" (0,0,0,0,0) (cs)) -- Rekursives "zerlegen" der im Container enthaltenen Liste c:cs liebe Grüße Moch |
|||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
Hallo, Aufgabe 3 soll vermutlich die Größen aller Container in der Liste summieren. Das geht am einfachsten, indem du mittels map die Funktion zaehleBytes auf jedes Element der Liste anwendest (damit entsteht eine Liste vom Typ [Int]), und dann einfach alle Ints in der Liste aufsummierst. Dafür gibt es auch schon die Funktion sum. Viele Grüße, Siracusa |
|||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
Vielen Dank! Hab's hinbekommen =) | |||||||||||
Zum Seitenanfang | |||||||||||