-- Compiling
instance Gram_Term_AtomsFor src ss g Bool
instance (Source src, Inj_Sym ss Bool) => ModuleFor src ss Bool where
- moduleFor _s = ["Bool"] `moduleWhere`
+ moduleFor = ["Bool"] `moduleWhere`
[ "False" := teBool False
, "True" := teBool True
, "not" := teBool_not
tyBool = tyConst @(K Bool) @Bool
-- ** 'Term's
-teBool :: Source src => Inj_Sym ss Bool => Bool -> Term src ss ts '[] Bool
+teBool :: Source src => Inj_Sym ss Bool => Bool -> Term src ss ts '[] (() #> Bool)
teBool b = Term noConstraint tyBool $ teSym @Bool $ bool b
-teBool_not :: TermDef Bool '[] (Bool -> Bool)
+teBool_not :: TermDef Bool '[] (() #> (Bool -> Bool))
teBool_not = Term noConstraint (tyBool ~> tyBool) $ teSym @Bool $ lam1 not
-teBool_and, teBool_or, teBool_xor :: TermDef Bool '[] (Bool -> Bool -> Bool)
+teBool_and, teBool_or, teBool_xor :: TermDef Bool '[] (() #> (Bool -> Bool -> Bool))
teBool_and = Term noConstraint (tyBool ~> tyBool ~> tyBool) $ teSym @Bool $ lam2 (&&)
teBool_or = Term noConstraint (tyBool ~> tyBool ~> tyBool) $ teSym @Bool $ lam2 (||)
teBool_xor = Term noConstraint (tyBool ~> tyBool ~> tyBool) $ teSym @Bool $ lam2 xor