module ZkFold.Symbolic.Data.Conditional where import Prelude hiding (Bool, Num (..), (/)) import ZkFold.Symbolic.Data.Bool (BoolType (..)) class BoolType b => Conditional b a where bool :: a -> a -> b -> a gif :: b -> a -> a -> a gif b b a x a y = a -> a -> b -> a forall b a. Conditional b a => a -> a -> b -> a bool a y a x b b (?) :: b -> a -> a -> a (?) = b -> a -> a -> a forall b a. Conditional b a => b -> a -> a -> a gif instance {-# OVERLAPPABLE #-} (BoolType b, Eq b) => Conditional b x where bool :: x -> x -> b -> x bool x f x t b b = if b b b -> b -> Bool forall a. Eq a => a -> a -> Bool == b forall b. BoolType b => b true then x t else x f