Control.Alternative.Free

data Alt f a

runAlt

liftAlt

hoistAlt