module Utils.Applicative where


extract :: Applicative m => m a1 -> m a2 -> m b -> m b
extract :: m a1 -> m a2 -> m b -> m b
extract m a1
start m a2
end m b
inner = m a1
start m a1 -> m b -> m b
forall (f :: * -> *) a b. Applicative f => f a -> f b -> f b
*> m b
inner m b -> m a2 -> m b
forall (f :: * -> *) a b. Applicative f => f a -> f b -> f a
<* m a2
end