Ich begann Haskell zu studieren, um mich auf das nächste Semester vorzubereiten (ich habe es Anfang des letzten Semesters fallen gelassen), und ich habe erfolgreich einige grundlegende Funktionen geschrieben. Das Thema, das ich gerade überprüfe, ist Lists, und ich brauche Hilfe, um eine sehr einfache Funktion namens cons8 zu schreiben, die ein Argument akzeptiert, das eine Liste ist und eine 8 zum Anfang einer solchen Liste hinzufügt. Mein Problem ist, dass ich festhalte, wie man eine Liste als Argument der Funktion einfügt und wie man sich darauf im Körper der Funktion bezieht. Ich denke, dass ich die Art definieren können wie folgt und dann die Funktion schreiben:Eine Funktion schreiben, die eine Liste als Argument akzeptiert
cons8 :: [a] -> [a]
Ich werde sehr schätzen Ihre Hilfe mein Problem zu lösen.
Ihre Typ-Signatur schlägt vor, dass "cons8" mit Listen beliebigen Typs arbeiten kann, aber wenn Sie eine "8" in die Liste einfügen möchten, muss es sich um eine Liste von Zahlen handeln. – sepp2k
Dies ist wahrscheinlich ein Duplikat, aber es ist sowieso eine einfache Antwort: Sie müssen zwei Definitionen unter die es Muster passt, eins für leere Liste und eins für nicht, zwei Zeilen: 'cons8 [] = (Ihr leerer Fallcode hier) ',' cons8 (x: xs) = (nicht leerer Fall, x Muster passt zum Kopf und ist vom Typ a, xs zum Rest der Liste und ist Typ [a]) '. 'cons8' würde keinen leeren Kasten benötigen, ich hoffe, du kannst verstehen, warum - es manipuliert nicht den Kopf, sondern macht einfach etwas mit der Liste selbst. –
Die einfache Antwort in einer Zeile besteht darin, die Infix-Funktion in ein Präfix umzuwandeln, um das Curry-Verfahren zu nutzen (ich denke, das ist die korrekte Terminologie). 'cons8 = (:) 8' –