diff options
Diffstat (limited to 'std/prelude/booleans.pk')
-rw-r--r-- | std/prelude/booleans.pk | 39 |
1 files changed, 13 insertions, 26 deletions
diff --git a/std/prelude/booleans.pk b/std/prelude/booleans.pk index bd81925..e92eac8 100644 --- a/std/prelude/booleans.pk +++ b/std/prelude/booleans.pk @@ -4,39 +4,26 @@ pub type unit = union[sole] pub type bool = union[false, true] -# note: puck could resolve kleene.false vs bool.false... -# this is probably not worth it compared to improved type inference -# pub type Kleene = union[False, Maybe, True] - ## Boolean equality -pub func ==(a: bool, b: bool): bool = - match a - of (true, true), (false, false): true - of (false, true), (true, false): false +@[magic] +pub func ==(a: bool, b: bool): bool -pub func !=(a: bool, b: bool): bool = - not a == b +## Boolean inequality +@[magic] +pub func !=(a: bool, b: bool): bool ## Boolean negation -pub func not(a: bool): bool = - match a - of true: false - of false: true +@[magic] +pub func not(a: bool): bool ## Boolean conjunction -pub func and(a: bool, b: bool): bool = - match (a, b) - of (true, true): true - of _: false +@[magic] +pub func and(a: bool, b: bool): bool ## Boolean disjunction -pub func or(a: bool, b: bool): bool = - match (a, b) - of (false, false): false - of _: true +@[magic] +pub func or(a: bool, b: bool): bool ## Boolean exclusive disjunction -pub func xor(a: bool, b: bool): bool = - match (a, b) - of (true, true), (false, false): false - of (true, false), (false, true): true +@[magic] +pub func xor(a: bool, b: bool): bool |