Hey Leute wir haben grade im Informatik-Unterricht Haskell und ich verzweifel die ganze Zeit sonst bin ich immer nahc langer Zeit aufs Ergebniss gekommen, aber jetzt hab ich keine Ahnung-.-

Als erstes ein paar Beispiele, welche ich hatte um zu zeigen um was es geht.

inssort: fügt ein Element in eine sortierte Liste ein. Dabei sollen doppelte Elemente erlaubt sein.


-- inssort

inssort n [] = [n]
inssort n (x:xs)
|n > x = [x] ++ (inssort n xs)
|otherwise = [n] ++ [x] ++ xs

del: löscht alle Vorkommen eines bestimmten Elements in einer Liste

-- del

del a [] = []
del a (x:xs)
|a == x = del a xs
|otherwise = [x] ++ (del a xs)

summe: liefert die Summe aller Listenelemente

--summe

summe [] = 0
summe (x:xs) = x + summe xs

So darum geht es! Jetzt zu den Aufgaben an denen ich komplett verzweifelt bin.

Schreiben Sie eine Funktion nehme_n, die die ersten n Elemente einer Liste zurückliefert. Wenn n größer als die Länge der Liste ist, soll die gesmate Liste zurückgeliefert werden.
Ich habe mit folgendes Gedacht, aber leider fehlt da noch was:

--nehme_n

nehme_n a [] = 0
nehme_n a (x:xs)
|a > (x:xs) = [x] ++ xs

Jetzt die 2te Aufgabe die ich noch weniger verstehe-..-

Eine Funktion nehme_solange, liefert alle Elemente einer Liste zurück, bis eine boolsche Bedingung nicht mehr erfüllt ist.

nehme_solange (<10) [1,2,3,12,4] = [1,3,5]

PS: Alle Funktionen müssen Rekursiv sein

Ich hoffe ihr könnte mir helfen, ich würd mich auch über tips freuen.

Danke im vorraus

gh0st