4 Stimmen

Haskell: Festgefahren beim Schreiben einer Funktion zur Replikation von `elem`

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X