www.jammni.de

Logo - Kleiner Drache
Login
Username:

Passwort:

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

Logo - DracheHaskell-Forum

elko

Gepostet:
03.05.2011 20:54

Mysteriöser Anfänger-Typfehler?!  
Hey,

ich programmiere erst seit kurzem mit Haskell und habe eine Aufgabe, bei der ich einfach immer einen Typfehler bekomme...

Aufgabe: Aus

dreiZusammen [1,2,3,4,5,6,7]

soll
[[2,3,1][5,6,4][7]]
werden.

Mein Quelltext:

dreiZusammen list = ([(first . remain)(list), (first . remain. remain)(list), first list]) : (dreiZusammen ((remain . remain . remain)(list)) )
first [] = []
first (x:xs) = x
remain [] = []
remain (x:xs) = xs


Und was kommt als Meldung, wenn ich dreiZusammen aufrufe? Das hier kommt:
    No instance for (Num [a0])
arising from the literal `17\'
Possible fix: add an instance declaration for (Num [a0])
In the expression: 17
In the first argument of `dreiZusammen\', namely
`[1, 2, 3, 4, ....]\'
In the expression: dreiZusammen [1, 2, 3, 4, ....]


Anmerkung: In der Aufgabe geht die Liste bis 17.

Kann mir jemand helfen?

Gruß,
elko
Zum Seitenanfang    
 
Landei

Gepostet:
04.05.2011 08:47

   
Habe den Code nur überflogen, aber das hier...


first [] = []
first (x:xs) = x


... kann nicht funktionieren. Einmal gibst du eine Liste zurück, und einmal ein einzelnes Element.

Deine Aufgabe lässt sich übrigens in zwei Zeilen lösen. Ich gebe mal nur die linken Seiten vor:


dreiZusammen (x:y:z:rest) = ...
dreiZusammen rest = ...
Zum Seitenanfang