Ich habe dies nur auf Haskell-Cafe gefragt, aber ich denke, ich könnte auch hier fragen. Ist die folgende Monad
Instanz für Backwards m
gültig?Gibt Backwards eine Monad-Instanz zu?
{-# Language RecursiveDo #-}
import Control.Applicative.Backwards
import Control.Monad.Fix
instance MonadFix m => Monad (Backwards m) where
m >>= f = Backwards $
do
fin <- forwards (f int)
int <- forwards m
pure fin
Wenn ja, könnte ich das auch hinzufügen?
instance MonadFix m => MonadFix (Backwards m) where
mfix f = Backwards $ mfix (forwards . f)
Ja, ich bin mir dieser Einschränkung bewusst, die den Nutzen der Instanz stark einschränkt. Was mir noch nicht klar ist, ist, ob diese Einschränkung ihre * Gültigkeit * beeinflusst. – dfeuer
Okay, ich denke ich sehe, wie das jetzt die Dinge bricht. Ich habe eine Antwort geschrieben, von der ich vermute, dass sie sie beweist. – dfeuer
Ich höre GHC 8.0 unterstützt die Zeitreise in Bezug auf 'IO'. – PyRulez