module Data.Bool.Higher ((??),bool) where import Data.Bool (??) :: a -> a -> Bool -> a (a ?? b) p | p = a | not p = b bool :: (a -> b) -> (a -> b) -> (a -> Bool) -> a -> b bool true false p v = false v ?? true v $ p v