Copyright (C) 2000-2012 |
GNU Info (guile.info)BooleansBooleans ======== The two boolean values are `#t' for true and `#f' for false. Boolean values are returned by predicate procedures, such as the general equality predicates `eq?', `eqv?' and `equal?' (Note: Equality) and numerical and string comparison operators like `string=?' (REFFIXME) and `<=' (REFFIXME). (<= 3 8) => #t (<= 3 -3) => #f (equal? "house" "houses") => #f (eq? #f #f) => #t In test condition contexts like `if' (REFFIXME) and `cond' (REFFIXME), where a group of subexpressions will be evaluated only if a CONDITION expression evaluates to "true", "true" means any value at all except `#f'. (if #t "yes" "no") => "yes" (if 0 "yes" "no") => "yes" (if #f "yes" "no") => "no" A result of this asymmetry is that typical Scheme source code more often uses `#f' explicitly than `#t': `#f' is necessary to represent an `if' or `cond' false value, whereas `#t' is not necessary to represent an `if' or `cond' true value. It is important to note that `#f' is *not* equivalent to any other Scheme value. In particular, `#f' is not the same as the number 0 (like in C and C++), and not the same as the "empty list" (like in some Lisp dialects). The `not' procedure returns the boolean inverse of its argument: - primitive: not x Return `#t' iff X is `#f', else return `#f'. The `boolean?' procedure is a predicate that returns `#t' if its argument is one of the boolean values, otherwise `#f'. - primitive: boolean? obj Return `#t' iff OBJ is either `#t' or `#f'. automatically generated by info2www version 1.2.2.9 |