From e19721af5e5fe172e93ebed1777e4718981516ef Mon Sep 17 00:00:00 2001 From: Danila Fedorin Date: Sun, 12 Mar 2023 00:31:02 -0800 Subject: [PATCH] Avoid calling failure continuation in msplit --- src/Control/Monad/Logic/Trans.purs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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