Boolean

The   type has exactly two members,  and. All three of these objects print with those names.

? true ? false ? boolean
 * 1) value: true
 * 1) value: false
 * 1) value: Boolean

The universal scope contains  (no capital), , and.

Protocol
false.pick( t, f ) returns f ; true.pick( t , f ) returns t.

? true.pick(1, 2) ? false.pick(3, 4)
 * 1) value: 1
 * 1) value: 4

Boolean negation.

? !true ? !false
 * 1) value: false
 * 1) value: true

Boolean or. The argument is coerced to a boolean.

? false | false ? false | true ? false | def _{to __conformTo(==boolean) :any {return false}} ? true | false ? true | true ? true | -1 ? true | def _{to __conformTo(==boolean) :any {return true}}
 * 1) value: false
 * 1) value: true
 * 1) value: false
 * 1) value: true
 * 1) value: true
 * 1) problem: the int -1 doesn't coerce to a boolean
 * 1) value: true

Boolean and. The argument is coerced to a boolean.

? true & true ? true & false ? true & def _{to __conformTo(==boolean) :any {return true}} ? false & true ? false & false ? false & -1 ? false & def _{to __conformTo(==boolean) :any {return false}}
 * 1) value: true
 * 1) value: false
 * 1) value: true
 * 1) value: false
 * 1) value: false
 * 1) problem: the int -1 doesn't coerce to a boolean
 * 1) value: false

discuss ideal default wording of coercion failure errors

Boolean exclusive or. The argument is coerced to a boolean.

? false ^ false ? false ^ true ? true ^ def _{to __conformTo(==boolean) :any {return true}} ? true ^ false ? true ^ true ? false ^ -1 ? false ^ def _{to __conformTo(==boolean) :any {return true}}
 * 1) value: false
 * 1) value: true
 * 1) value: false
 * 1) value: true
 * 1) value: false
 * 1) problem: the int -1 doesn't coerce to a boolean
 * 1) value: true

op__cmp/1
Comparison with other Booleans. See Message op__cmp.

write tests for this