DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH
 

(guile.info.gz) Common Feature Symbols

Info Catalog (guile.info.gz) Feature Manipulation (guile.info.gz) Feature Tracking
 
 33.2.2 Common Feature Symbols
 -----------------------------
 
 In general, a particular feature may be available for one of two
 reasons.  Either because the Guile library was configured and compiled
 with that feature enabled -- i.e. the feature is built into the library
 on your system.  Or because some C or Scheme code that was dynamically
 loaded by Guile has added that feature to the list.
 
    In the first category, here are the features that the current
 version of Guile may define (depending on how it is built), and what
 they mean.
 
 `array'
      Indicates support for arrays ( Arrays).
 
 `array-for-each'
      Indicates availability of `array-for-each' and other array mapping
      procedures ( Array Mapping).
 
 `char-ready?'
      Indicates that the `char-ready?' function is available (
      Reading).
 
 `complex'
      Indicates support for complex numbers.
 
 `current-time'
      Indicates availability of time-related functions: `times',
      `get-internal-run-time' and so on ( Time).
 
 `debug-extensions'
      Indicates that the debugging evaluator is available, together with
      the options for controlling it.
 
 `delay'
      Indicates support for promises ( Delayed Evaluation).
 
 `EIDs'
      Indicates that the `geteuid' and `getegid' really return effective
      user and group IDs ( Processes).
 
 `inexact'
      Indicates support for inexact numbers.
 
 `i/o-extensions'
      Indicates availability of the following extended I/O procedures:
      `ftell', `redirect-port', `dup->fdes', `dup2', `fileno',
      `isatty?', `fdopen', `primitive-move->fdes' and `fdes->ports'
      ( Ports and File Descriptors).
 
 `net-db'
      Indicates availability of network database functions:
      `scm_gethost', `scm_getnet', `scm_getproto', `scm_getserv',
      `scm_sethost', `scm_setnet', `scm_setproto', `scm_setserv', and
      their `byXXX' variants ( Network Databases).
 
 `posix'
      Indicates support for POSIX functions: `pipe', `getgroups',
      `kill', `execl' and so on ( POSIX).
 
 `random'
      Indicates availability of random number generation functions:
      `random', `copy-random-state', `random-uniform' and so on (
      Random).
 
 `reckless'
      Indicates that Guile was built with important checks omitted -- you
      should never see this!
 
 `regex'
      Indicates support for POSIX regular expressions using
      `make-regexp', `regexp-exec' and friends ( Regexp
      Functions).
 
 `socket'
      Indicates availability of socket-related functions: `socket',
      `bind', `connect' and so on ( Network Sockets and
      Communication).
 
 `sort'
      Indicates availability of sorting and merging functions (
      Sorting).
 
 `system'
      Indicates that the `system' function is available (
      Processes).
 
 `threads'
      Indicates support for multithreading ( Threads).
 
 `values'
      Indicates support for multiple return values using `values' and
      `call-with-values' ( Multiple Values).
 
    Available features in the second category depend, by definition, on
 what additional code your Guile process has loaded in.  The following
 table lists features that you might encounter for this reason.
 
 `defmacro'
      Indicates that the `defmacro' macro is available ( Macros).
 
 `describe'
      Indicates that the `(oop goops describe)' module has been loaded,
      which provides a procedure for describing the contents of GOOPS
      instances.
 
 `readline'
      Indicates that Guile has loaded in Readline support, for command
      line editing ( Readline Support).
 
 `record'
      Indicates support for record definition using `make-record-type'
      and friends ( Records).
 
    Although these tables may seem exhaustive, it is probably unwise in
 practice to rely on them, as the correspondences between feature symbols
 and available procedures/behaviour are not strictly defined.  If you are
 writing code that needs to check for the existence of some procedure, it
 is probably safer to do so directly using the `defined?' procedure than
 to test for the corresponding feature using `feature?'.
 
Info Catalog (guile.info.gz) Feature Manipulation (guile.info.gz) Feature Tracking
automatically generated byinfo2html