Ich möchte Minimum mit foldr oder foldMap implementieren. Nach der Übung, sollte es diese Definition haben:Wie implementiere ich Minimum mit foldr (oder foldMap)?
mini :: (Foldable t, Ord a) => t a -> Maybe a -- named "mini" to avoid name clash
Es ist ziemlich einfach klang, aber ich weiß nicht, was ich für X unter substiture kann, damit es funktioniert. Hilfe bitte?
mini xs = Just (foldr min X xs)
Und Sie erhalten Bonuspunkte, um mir zu zeigen, wie man es mit foldMap auch macht, aber das scheint härter.
Auch schlägt die Funktion fehl oben, wenn xs die leere Liste ist, aber selbst sollte ich in der Lage sein, die schließlich zu beheben. –
Siehe diese Frage für verschiedene Möglichkeiten, dies zu erreichen (offensichtlich nur max mit min ersetzen): http://stackoverflow.com/questions/12216886/monoid-mempty-in-pattern-matching –