:: List a -> List a package:fused-effects

Cull nondeterminism in the argument, returning at most one result.
cull (pure a <|> m) <|> n = pure a <|> n
Delimit the effect of cutfails, allowing backtracking to resume.
call cutfail <|> m = m
Given a Lift n constraint in a signature carried by m, sendM promotes arbitrary actions of type n a to m a. It is spiritually similar to lift from the MonadTrans typeclass.