Ich brauche eine faltbare Beispiel für eine Rose Baumdatenstruktur zu machen:Haskell Monoid faltbar Rosenstock
data Rose a = a :> [Rose a]
deriving (Eq, Show)
Mit dem folgenden Monoid und Klasse/Instanzen-Rose bezogen werden:
instance Functor Rose where
fmap f (a :> bs) = (f a) :> (map (fmap f) bs)
class Monoid a where
mempty :: a
(<>) :: a -> a -> a
instance Monoid [a] where
mempty = []
(<>) = (++)
Was ich versucht:
instance Foldable Rose where
fold (a:>b) = a <> (foldMap fold b)
dies ist jedoch nicht richtig, für die Systemprüfung arbeitete ich den Fehler:
*** Failed! Exception: 'Prelude.undefined':
[] :> []
Aber ich bin mir nicht sicher, warum es nicht funktioniert, könnte mir jemand helfen?
Vielen Dank im Voraus!
Mit freundlichen Grüßen, Skyfe.
Anstatt die Lösung in Ihrer Frage zu aktualisieren, warum schreiben Sie es nicht hier als Antwort? – Sibi
Guter, hatte nicht an diese Möglichkeit gedacht! – user2999349
Wie wäre es mit '{- LANGUAGE AbleitenFaltbar -}' 'Ableiten (faltbar)'? – viorior