From 1f93dc17459189dbeaebe564eede5baed7c4a00d Mon Sep 17 00:00:00 2001 From: Danila Fedorin Date: Sat, 4 Mar 2023 14:24:52 -0800 Subject: [PATCH] Add MonadUnify instance for the state monad. --- src/Control/Monad/Unify/Class.purs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/Control/Monad/Unify/Class.purs b/src/Control/Monad/Unify/Class.purs index 3dc8103..b4def73 100644 --- a/src/Control/Monad/Unify/Class.purs +++ b/src/Control/Monad/Unify/Class.purs @@ -5,6 +5,8 @@ import Prelude (Unit, unit, ($)) import Control.Applicative (pure) import Control.Bind (bind) import Control.MonadPlus (class MonadPlus, empty) +import Control.Monad.State.Trans (StateT) +import Control.Monad.Trans.Class (lift) import Data.Traversable (class Traversable, traverse) import Data.Tuple (Tuple(..)) import Data.Lazy (Lazy, force) @@ -43,3 +45,9 @@ unify f1 f2 = process (Merge k1 k2) = merge k1 k2 process (Store k f) = store k f process Fail = empty + +instance MonadUnify k f m => MonadUnify k f (StateT s m) where + fresh = lift fresh + merge m k = lift $ merge m k + store k f = lift $ store k f + reify f = lift $ reify f