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