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