{-# LANGUAGE NoImplicitPrelude #-}
module HsBindgen.Runtime.CBool (
true
, false
, isTrue
, isFalse
, fromBool
, toBool
, (&&)
, (||)
, not
, bool
, if_
, when
, unless
) where
import Prelude hiding (not, (&&), (||))
import Prelude qualified
true :: Num b => b
true :: forall b. Num b => b
true = b
1
false :: Num b => b
false :: forall b. Num b => b
false = b
0
isTrue :: (Eq b, Num b) => b -> Bool
isTrue :: forall b. (Eq b, Num b) => b -> Bool
isTrue = (b -> b -> Bool
forall a. Eq a => a -> a -> Bool
/= b
forall b. Num b => b
false)
isFalse :: (Eq b, Num b) => b -> Bool
isFalse :: forall b. (Eq b, Num b) => b -> Bool
isFalse = (b -> b -> Bool
forall a. Eq a => a -> a -> Bool
== b
forall b. Num b => b
false)
fromBool :: Num b => Bool -> b
fromBool :: forall b. Num b => Bool -> b
fromBool Bool
True = b
forall b. Num b => b
true
fromBool Bool
False = b
forall b. Num b => b
false
toBool :: (Eq b, Num b) => b -> Bool
toBool :: forall b. (Eq b, Num b) => b -> Bool
toBool = b -> Bool
forall b. (Eq b, Num b) => b -> Bool
isTrue
(&&) :: (Eq b, Num b) => b -> b -> b
b
l && :: forall b. (Eq b, Num b) => b -> b -> b
&& b
r = Bool -> b
forall b. Num b => Bool -> b
fromBool (Bool -> b) -> Bool -> b
forall a b. (a -> b) -> a -> b
$ b -> Bool
forall b. (Eq b, Num b) => b -> Bool
toBool b
l Bool -> Bool -> Bool
Prelude.&& b -> Bool
forall b. (Eq b, Num b) => b -> Bool
toBool b
r
(||) :: (Eq b, Num b) => b -> b -> b
b
l || :: forall b. (Eq b, Num b) => b -> b -> b
|| b
r = Bool -> b
forall b. Num b => Bool -> b
fromBool (Bool -> b) -> Bool -> b
forall a b. (a -> b) -> a -> b
$ b -> Bool
forall b. (Eq b, Num b) => b -> Bool
toBool b
l Bool -> Bool -> Bool
Prelude.|| b -> Bool
forall b. (Eq b, Num b) => b -> Bool
toBool b
r
not :: (Eq b, Num b) => b -> b
not :: forall b. (Eq b, Num b) => b -> b
not = Bool -> b
forall b. Num b => Bool -> b
fromBool (Bool -> b) -> (b -> Bool) -> b -> b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Bool -> Bool
Prelude.not (Bool -> Bool) -> (b -> Bool) -> b -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. b -> Bool
forall b. (Eq b, Num b) => b -> Bool
toBool
bool :: (Eq b, Num b) => a -> a -> b -> a
bool :: forall b a. (Eq b, Num b) => a -> a -> b -> a
bool a
f a
t b
b = if b -> Bool
forall b. (Eq b, Num b) => b -> Bool
isTrue b
b then a
t else a
f
if_ :: (Eq b, Num b) => b -> a -> a -> a
if_ :: forall b a. (Eq b, Num b) => b -> a -> a -> a
if_ b
b a
t a
f = if b -> Bool
forall b. (Eq b, Num b) => b -> Bool
isTrue b
b then a
t else a
f
when :: (Eq b, Num b, Applicative f) => b -> f () -> f ()
when :: forall b (f :: * -> *).
(Eq b, Num b, Applicative f) =>
b -> f () -> f ()
when b
b f ()
e = if b -> Bool
forall b. (Eq b, Num b) => b -> Bool
isTrue b
b then f ()
e else () -> f ()
forall a. a -> f a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
{-# ANN when ("HLint: ignore Use when" :: String) #-}
unless :: (Eq b, Num b, Applicative f) => b -> f () -> f ()
unless :: forall b (f :: * -> *).
(Eq b, Num b, Applicative f) =>
b -> f () -> f ()
unless b
b f ()
e = if b -> Bool
forall b. (Eq b, Num b) => b -> Bool
isFalse b
b then f ()
e else () -> f ()
forall a. a -> f a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
{-# ANN unless ("HLint: ignore Use when" :: String) #-}