Ternary.hs
1 2 3 4 5 6 7 8 | module Ternary where
data TernaryBranch a = a :? a
instance Functor TernaryBranch where fmap f (x :? y) = f x :? f y
infixr 0 ?:, ??, :?
(?:), (??) :: Bool -> TernaryBranch a -> a
True ?: (y :? _) = y
False ?: (_ :? z) = z
(??) = (?:) -- Included as an alias so you can write slightly more legible code
|