Die Aufgabe: Ich versuche, eine Funktion mit Typ Signatur minimum_recursive :: (a -> a -> Bool) -> [a] -> a
zu schreiben. Für seinen ersten Parameter akzeptiert er eine Funktion, die ich less
aufrufen werde, die zwei Parameter akzeptiert, und gibt True zurück, wenn der erste Parameter kleiner als der zweite ist, ansonsten False. minimum_recursive
akzeptiert auch eine Liste als zweiten Parameter. Mit expliziter Rekursion sollte minimum_recursive
den kleinsten Wert in seiner Eingabeliste [a] ermitteln.Explizite Rekursion in Haskell
Mein Denken: Ich dachte, um die tatsächliche Rekursion in eine Hilfsfunktion, die auch einen Akku akzeptiert. Ich würde die Helferfunktion mit dem ersten Gegenstand als Akkumulator bezeichnen.
Was ich bisher haben: Bisher habe ich folgendes:
-- function as first parameter to min'
-- accepts two params, returns True if
-- first must come before second in sorted
-- order
less :: Ord a => a -> a -> Bool
less a b = a < b
-- Subpart B
minimum_recursive :: (a -> a -> Bool) -> [a] -> a
minimum_recursive func list = minimum_recursive_h func list []
Ich habe Probleme mit herauszufinden, wie auch minimum_recursive_h
zu schreiben beginnen.
Hinweis: Ich weiß, es gibt wahrscheinlich einen einfacheren Weg, um diese Aufgabe zu erfüllen, aber ich bin verpflichtet, darüber zu gehen, wie oben angegeben.
Wenn dies eine Hausaufgabenfrage ist, sollten Sie sie als solche markieren. Wie auch immer, hier ist ein Zeiger: base case ist einfach, jetzt nehmen wir an, Sie haben bereits eine Funktion, die das minimale Element in einer Liste der Länge 'n - 1 'findet, wie würden Sie es mit dem aktuellen Element kombinieren, um eine Antwort für eine Liste zu erhalten der Länge "n"? – Vitus
Ich denke, ich würde das minimale Element der Liste der Länge 'n - 1' finden, dann vergleichen Sie das mit der ursprünglichen Liste Element n? Ich kenne die Haskell-Syntax dafür nicht. Ich werde etwas recherchieren. –
Siehe auch die Quelle von [minimumBy] (http://hackage.haskell.org/packages/archive/base/latest/doc/html/src/Data-List.html#minimumBy) aus den Standardbibliotheken. –