diff --git a/src/Control/Monad/Logic/Trans.purs b/src/Control/Monad/Logic/Trans.purs index 0c635b7..178b47b 100644 --- a/src/Control/Monad/Logic/Trans.purs +++ b/src/Control/Monad/Logic/Trans.purs @@ -59,7 +59,8 @@ instance MonadTrans SFKT where lift m = SFKT (\sk fk -> m >>= (\a -> sk a fk)) instance Monad m => MonadLogic (SFKT m) where - msplit ma = lift (unSFKT ma (\a fk -> pure (Just (a /\ (lift (fk unit) >>= reflect)))) (\_ -> pure Nothing)) + msplit ma = lift (unSFKT ma (\a fk -> pure (Just (a /\ (lazyLift fk >>= reflect)))) (\_ -> pure Nothing)) + where lazyLift f = SFKT (\sk fk -> f unit >>= (\a -> sk a fk)) interleave m1 m2 = do r <- msplit m1 case r of