Node:Common Feature Symbols, Previous:Feature Manipulation, Up:Feature Tracking
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
array-for-each
array-for-each
and other array mapping
procedures (see Array Mapping).
char-ready?
char-ready?
function is available
(see Reading).
complex
current-time
times
,
get-internal-run-time
and so on (see Time).
debug-extensions
delay
EIDs
geteuid
and getegid
really return
effective user and group IDs (see Processes).
inexact
i/o-extensions
ftell
, redirect-port
, dup->fdes
, dup2
,
fileno
, isatty?
, fdopen
,
primitive-move->fdes
and fdes->ports
(see Ports and File Descriptors).
net-db
scm_gethost
, scm_getnet
, scm_getproto
,
scm_getserv
, scm_sethost
, scm_setnet
, scm_setproto
,
scm_setserv
, and their `byXXX' variants (see Network Databases).
posix
pipe
, getgroups
,
kill
, execl
and so on (see POSIX).
random
random
, copy-random-state
, random-uniform
and so on
(see Random).
reckless
regex
make-regexp
, regexp-exec
and friends (see Regexp Functions).
socket
socket
,
bind
, connect
and so on (see Network Sockets and Communication).
sort
system
system
function is available
(see Processes).
threads
values
values
and
call-with-values
(see 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
defmacro
macro is available (see Macros).
describe
(oop goops describe)
module has been loaded,
which provides a procedure for describing the contents of GOOPS
instances.
readline
record
make-record-type
and friends (see 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?
.