Boolean
From Erights
The Boolean
type has exactly two members, false
and true
. All three of these objects print with those names.
? true # value: true ? false # value: false ? boolean # value: Boolean
The universal scope contains boolean
(no capital), false
, and true
.
Contents |
Protocol
pick/2
- Signature: pick(t, f) :any
false.pick(t, f) returns f; true.pick(t, f) returns t.
? true.pick(1, 2) # value: 1 ? false.pick(3, 4) # value: 4
not/0
- Signature: not() :Boolean
Boolean negation.
? !true # value: false ? !false # value: true
or/1
- Signature: or(other :Boolean) :Boolean
Boolean or. The argument is coerced to a boolean.
? false | false # value: false ? false | true # value: true ? false | def _{to __conformTo(==boolean) :any {return false}} # value: false ? true | false # value: true ? true | true # value: true ? true | -1 # problem: the int -1 doesn't coerce to a boolean ? true | def _{to __conformTo(==boolean) :any {return true}} # value: true
and/1
- Signature: and(other :Boolean) :Boolean
Boolean and. The argument is coerced to a boolean.
? true & true # value: true ? true & false # value: false ? true & def _{to __conformTo(==boolean) :any {return true}} # value: true ? false & true # value: false ? false & false # value: false ? false & -1 # problem: the int -1 doesn't coerce to a boolean ? false & def _{to __conformTo(==boolean) :any {return false}} # value: false
XXX discuss ideal default wording of coercion failure errors
xor/1
- Signature: xor(other :Boolean) :Boolean
Boolean exclusive or. The argument is coerced to a boolean.
? false ^ false # value: false ? false ^ true # value: true ? true ^ def _{to __conformTo(==boolean) :any {return true}} # value: false ? true ^ false # value: true ? true ^ true # value: false ? false ^ -1 # problem: the int -1 doesn't coerce to a boolean ? false ^ def _{to __conformTo(==boolean) :any {return true}} # value: true
op__cmp/1
Comparison with other Booleans. See Message op__cmp.
XXX write tests for this