Add MonadUnify instance for the state monad.

Tento commit je obsažen v:
Danila Fedorin 2023-03-04 14:24:52 -08:00
rodič d1e227dbed
revize 1f93dc1745

Zobrazit soubor

@ -5,6 +5,8 @@ import Prelude (Unit, unit, ($))
import Control.Applicative (pure) import Control.Applicative (pure)
import Control.Bind (bind) import Control.Bind (bind)
import Control.MonadPlus (class MonadPlus, empty) 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.Traversable (class Traversable, traverse)
import Data.Tuple (Tuple(..)) import Data.Tuple (Tuple(..))
import Data.Lazy (Lazy, force) import Data.Lazy (Lazy, force)
@ -43,3 +45,9 @@ unify f1 f2 =
process (Merge k1 k2) = merge k1 k2 process (Merge k1 k2) = merge k1 k2
process (Store k f) = store k f process (Store k f) = store k f
process Fail = empty 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