DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH
 

(guile.info.gz) Booleans

Info Catalog (guile.info.gz) Simple Data Types (guile.info.gz) Numbers
 
 21.1 Booleans
 =============
 
 The two boolean values are `#t' for true and `#f' for false.
 
    Boolean values are returned by predicate procedures, such as the
 Equality::) and numerical and string comparison operators like
 `string=?' ( String Comparison) and `<=' ( Comparison).
 
      (<= 3 8)
      =>
      #t
 
      (<= 3 -3)
      =>
      #f
 
      (equal? "house" "houses")
      =>
      #f
 
      (eq? #f #f)
      =>
      #t
 
    In test condition contexts like `if' and `cond' ( if cond
 case), 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:
 
  -- Scheme Procedure: not x
  -- C Function: scm_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'.
 
  -- Scheme Procedure: boolean? obj
  -- C Function: scm_boolean_p (obj)
      Return `#t' iff OBJ is either `#t' or `#f'.
 
Info Catalog (guile.info.gz) Simple Data Types (guile.info.gz) Numbers
automatically generated byinfo2html