From 06fd5df1376c007ae327610f27e67ea15099e71d Mon Sep 17 00:00:00 2001 From: Teo Camarasu Date: Tue, 7 Feb 2023 10:48:42 +0000 Subject: [PATCH] yesod-form: Add Monad AForm instance for transformers >=0.6 This is required in order to have a MonadTrans instance --- yesod-form/Yesod/Form/Types.hs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/yesod-form/Yesod/Form/Types.hs b/yesod-form/Yesod/Form/Types.hs index df13ab32..994ae3ca 100644 --- a/yesod-form/Yesod/Form/Types.hs +++ b/yesod-form/Yesod/Form/Types.hs @@ -166,6 +166,18 @@ instance Monad m => Applicative (AForm m) where (a, b, ints', c) <- f mr env ints (x, y, ints'', z) <- g mr env ints' return (a <*> x, b . y, ints'', c `mappend` z) + +#if MIN_VERSION_transformers(0,6,0) +instance Monad m => Monad (AForm m) where + (AForm f) >>= k = AForm $ \mr env ints -> do + (a, b, ints', c) <- f mr env ints + case a of + FormSuccess r -> do + (x, y, ints'', z) <- unAForm (k r) mr env ints' + return (x, b . y, ints'', c `mappend` z) + FormFailure err -> pure (FormFailure err, b, ints', c) + FormMissing -> pure (FormMissing, b, ints', c) +#endif instance (Monad m, Monoid a) => Monoid (AForm m a) where mempty = pure mempty mappend a b = mappend <$> a <*> b