In meiner allerersten Vorlesung in Haskell wurden uns eine Reihe von Problemen gestellt. Eine davon war, True zurückzugeben, wenn n Zahlen in einer Liste vorhanden sind, oder False andernfalls. Ich habe es geschafft, zu bekommen, was ich denke, ist auf halbem Weg dorthin, aber ich bekomme verschiedene Kompilierfehler und bin ziemlich frustriert, weil ich sogar verstehen kann, was sie bedeuten.
Bislang habe ich Folgendes getan
// No problem with this function
matches :: Int -> [Int] -> [Int] // This function is to return the matches
matches x y = [a | a <-y, a==x] // ie. main> 1 [1,3,5,7,1,4] outputs [1,1]
// Here am stuck
myelem :: Int -> [Int] -> Bool
myelem x [] = False
myelem x (y:ys)
| x == y = y : x myelem ys // Am not sure about recursion as
// we have not yet covered
Offensichtlich ist dies für eine Klasse, also bitte nicht geben Sie die Antwort ein. Aber vielleicht ein paar Beispiele, die mir helfen, sowohl über die Funktionsweise von Haskell nachzudenken als auch darüber, wie ich das Problem angehen kann. Jeder Hinweis wird sehr geschätzt.
LÖSUNG
matches :: Int -> [Int] -> [Int]
matches x y = [a | a <-y, a==x]
myelem :: Int -> [Int] -> Bool
myelem x [] = False
myelem x (y:ys)
| x == y = True
| otherwise = myelem x (ys)
Prost Jungs