From 80dc5b6a2cbd9149a802ee53296649b1f1493283 Mon Sep 17 00:00:00 2001 From: Danila Fedorin Date: Fri, 3 Mar 2023 22:56:32 -0800 Subject: [PATCH] Use `derive newtype instance` to save some boilerplate --- src/Control/Monad/Unify/Trans.purs | 22 +++++----------------- 1 file changed, 5 insertions(+), 17 deletions(-) diff --git a/src/Control/Monad/Unify/Trans.purs b/src/Control/Monad/Unify/Trans.purs index de23008..780184b 100644 --- a/src/Control/Monad/Unify/Trans.purs +++ b/src/Control/Monad/Unify/Trans.purs @@ -32,24 +32,12 @@ newtype UnifyT k f m a = MkUnifyT (StateT (UnificationState k f) m a) derive instance Newtype (UnifyT k f m a) _ derive instance Functor m => Functor (UnifyT k f m) - -instance Monad m => Apply (UnifyT k f m) where - apply m1 m2 = MkUnifyT $ apply (un MkUnifyT m1) (un MkUnifyT m2) - -instance Monad m => Applicative (UnifyT k f m) where - pure a = MkUnifyT $ pure a - -instance Monad m => Bind (UnifyT k f m) where - bind m f = MkUnifyT $ (un MkUnifyT m) >>= (un MkUnifyT <<< f) - +derive newtype instance Monad m => Apply (UnifyT k f m) +derive newtype instance Monad m => Applicative (UnifyT k f m) +derive newtype instance Monad m => Bind (UnifyT k f m) instance Monad m => Monad (UnifyT k f m) - -instance (Monad m, Alt m) => Alt (UnifyT k f m) where - alt = over2 MkUnifyT alt - -instance (Monad m, Plus m) => Plus (UnifyT k f m) where - empty = MkUnifyT empty - +derive newtype instance (Monad m, Alt m) => Alt (UnifyT k f m) +derive newtype instance (Monad m, Plus m) => Plus (UnifyT k f m) instance (Monad m, Alternative m) => Alternative (UnifyT k f m) instance (MonadPlus m) => MonadPlus (UnifyT k f m)