Logic
Booleans
The type of booleans, written Bool or Boolean, represents
logical truth and falsehood. The two values of this type are written
true and false. (For convenience True and False also
work.)
Logical AND can be written
and,&&, or∧(note that∧isU+2227 LOGICAL AND, not a caret symbol^, which is reserved for exponentiation).Logical OR is written
or,||, or∨(U+2228 LOGICAL OR).Logical negation (NOT) is written
notor¬(U+00AC NOT SIGN).Logical implication is written
impliesor==>.
Disco> true and false
false
Disco> true || false
true
Disco> not (true ∧ true)
false
Disco> ¬ (false or false or false or true)
false
Disco> true implies false
false
Disco> false implies true
true
Equality testing
If you have two disco values of the same type, in almost all cases you
can compare them to see whether they are equal using ==, resulting
in a Bool value.
Disco> 2 == 5
false
Disco> 3 * 7 == 2*10 + 1
true
Disco> (3/5)^2 + (4/5)^2 == 1
true
Disco> false == False
true
The /= operator tests whether two values are not equal; it is
just the logical negation of ==.
Comparison
Again, in almost all cases values can be compared to see which is less
or greater, using operators <, <=, >, or >=.
Disco> 2 < 5
true
Disco> false < true
true
Comparisons can also be chained; the result is obtained by comparing each pair of values according to the comparison between them, and taking the logical AND of all the results. For example:
Disco> 1 < 3 < 8 < 99
true
Disco> 2.2 < 5.9 > 3.7 < 8.8 > 1.0 < 9
true
Disco> x : Int
Disco> x = 5
Disco> 2 < x < 10
true