(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