mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-21 11:10:21 +02:00
*** empty log message ***
This commit is contained in:
parent
ef2714120a
commit
36d3d54043
1 changed files with 64 additions and 18 deletions
82
NEWS
82
NEWS
|
@ -46,6 +46,48 @@ in backtraces.
|
||||||
|
|
||||||
* Changes to Scheme functions and syntax
|
* Changes to Scheme functions and syntax
|
||||||
|
|
||||||
|
** Hooks
|
||||||
|
|
||||||
|
A hook contains a list of functions which should be called on
|
||||||
|
particular occasions in an existing program. Hooks are used for
|
||||||
|
customization.
|
||||||
|
|
||||||
|
A window manager might have a hook before-window-map-hook. The window
|
||||||
|
manager uses the function run-hooks to call all functions stored in
|
||||||
|
before-window-map-hook each time a window is mapped. The user can
|
||||||
|
store functions in the hook using add-hook!.
|
||||||
|
|
||||||
|
In Guile, hooks are first class objects.
|
||||||
|
|
||||||
|
*** New function: make-hook [N_ARGS]
|
||||||
|
|
||||||
|
Return a hook for hook functions which can take N_ARGS arguments.
|
||||||
|
The default value for N_ARGS is 0.
|
||||||
|
|
||||||
|
*** New function: add-hook! HOOK PROC [APPEND_P]
|
||||||
|
|
||||||
|
Put PROC at the beginning of the list of functions stored in HOOK.
|
||||||
|
If APPEND_P is supplied, and non-false, put PROC at the end instead.
|
||||||
|
|
||||||
|
PROC must be able to take the number of arguments specified when the
|
||||||
|
hook was created.
|
||||||
|
|
||||||
|
If PROC already exists in HOOK, then remove it first.
|
||||||
|
|
||||||
|
*** New function: remove-hook! HOOK PROC
|
||||||
|
|
||||||
|
Remove PROC from the list of functions in HOOK.
|
||||||
|
|
||||||
|
*** New function: reset-hook! HOOK
|
||||||
|
|
||||||
|
Clear the list of hook functions stored in HOOK.
|
||||||
|
|
||||||
|
*** New function: run-hook HOOK ARG1 ...
|
||||||
|
|
||||||
|
Run all hook functions stored in HOOK with arguments ARG1 ... .
|
||||||
|
The number of arguments supplied must correspond to the number given
|
||||||
|
when the hook was created.
|
||||||
|
|
||||||
** The function `dynamic-link' now takes optional keyword arguments.
|
** The function `dynamic-link' now takes optional keyword arguments.
|
||||||
The only keyword argument that is currently defined is `:global
|
The only keyword argument that is currently defined is `:global
|
||||||
BOOL'. With it, you can control whether the shared library will be
|
BOOL'. With it, you can control whether the shared library will be
|
||||||
|
@ -789,7 +831,9 @@ shadow earlier bindings.
|
||||||
|
|
||||||
Guile's and-let* macro was contributed by Michael Livshin.
|
Guile's and-let* macro was contributed by Michael Livshin.
|
||||||
|
|
||||||
** New function: sorted? SEQUENCE LESS?
|
** New sorting functions
|
||||||
|
|
||||||
|
*** New function: sorted? SEQUENCE LESS?
|
||||||
Returns `#t' when the sequence argument is in non-decreasing order
|
Returns `#t' when the sequence argument is in non-decreasing order
|
||||||
according to LESS? (that is, there is no adjacent pair `... x y
|
according to LESS? (that is, there is no adjacent pair `... x y
|
||||||
...' for which `(less? y x)').
|
...' for which `(less? y x)').
|
||||||
|
@ -798,7 +842,7 @@ Returns `#f' when the sequence contains at least one out-of-order
|
||||||
pair. It is an error if the sequence is neither a list nor a
|
pair. It is an error if the sequence is neither a list nor a
|
||||||
vector.
|
vector.
|
||||||
|
|
||||||
** New function: merge LIST1 LIST2 LESS?
|
*** New function: merge LIST1 LIST2 LESS?
|
||||||
LIST1 and LIST2 are sorted lists.
|
LIST1 and LIST2 are sorted lists.
|
||||||
Returns the sorted list of all elements in LIST1 and LIST2.
|
Returns the sorted list of all elements in LIST1 and LIST2.
|
||||||
|
|
||||||
|
@ -807,37 +851,39 @@ in the sense that (LESS? x y) --> #f for x, y in {a, b1, b2},
|
||||||
and that a < b1 in LIST1. Then a < b1 < b2 in the result.
|
and that a < b1 in LIST1. Then a < b1 < b2 in the result.
|
||||||
(Here "<" should read "comes before".)
|
(Here "<" should read "comes before".)
|
||||||
|
|
||||||
** New procedure: merge! LIST1 LIST2 LESS?
|
*** New procedure: merge! LIST1 LIST2 LESS?
|
||||||
Merges two lists, re-using the pairs of LIST1 and LIST2 to build
|
Merges two lists, re-using the pairs of LIST1 and LIST2 to build
|
||||||
the result. If the code is compiled, and LESS? constructs no new
|
the result. If the code is compiled, and LESS? constructs no new
|
||||||
pairs, no pairs at all will be allocated. The first pair of the
|
pairs, no pairs at all will be allocated. The first pair of the
|
||||||
result will be either the first pair of LIST1 or the first pair of
|
result will be either the first pair of LIST1 or the first pair of
|
||||||
LIST2.
|
LIST2.
|
||||||
|
|
||||||
** New function: sort SEQUENCE LESS?
|
*** New function: sort SEQUENCE LESS?
|
||||||
Accepts either a list or a vector, and returns a new sequence
|
Accepts either a list or a vector, and returns a new sequence
|
||||||
which is sorted. The new sequence is the same type as the input.
|
which is sorted. The new sequence is the same type as the input.
|
||||||
Always `(sorted? (sort sequence less?) less?)'. The original
|
Always `(sorted? (sort sequence less?) less?)'. The original
|
||||||
sequence is not altered in any way. The new sequence shares its
|
sequence is not altered in any way. The new sequence shares its
|
||||||
elements with the old one; no elements are copied.
|
elements with the old one; no elements are copied.
|
||||||
|
|
||||||
** New procedure: sort! SEQUENCE LESS
|
*** New procedure: sort! SEQUENCE LESS
|
||||||
Returns its sorted result in the original boxes. No new storage is
|
Returns its sorted result in the original boxes. No new storage is
|
||||||
allocated at all. Proper usage: (set! slist (sort! slist <))
|
allocated at all. Proper usage: (set! slist (sort! slist <))
|
||||||
|
|
||||||
** New function: stable-sort SEQUENCE LESS?
|
*** New function: stable-sort SEQUENCE LESS?
|
||||||
Similar to `sort' but stable. That is, if "equal" elements are
|
Similar to `sort' but stable. That is, if "equal" elements are
|
||||||
ordered a < b in the original sequence, they will have the same order
|
ordered a < b in the original sequence, they will have the same order
|
||||||
in the result.
|
in the result.
|
||||||
|
|
||||||
** New function: stable-sort! SEQUENCE LESS?
|
*** New function: stable-sort! SEQUENCE LESS?
|
||||||
Similar to `sort!' but stable.
|
Similar to `sort!' but stable.
|
||||||
Uses temporary storage when sorting vectors.
|
Uses temporary storage when sorting vectors.
|
||||||
|
|
||||||
** New functions: sort-list, sort-list!
|
*** New functions: sort-list, sort-list!
|
||||||
Added for compatibility with scsh.
|
Added for compatibility with scsh.
|
||||||
|
|
||||||
** New function: random N [STATE]
|
** New built-in random number support
|
||||||
|
|
||||||
|
*** New function: random N [STATE]
|
||||||
Accepts a positive integer or real N and returns a number of the
|
Accepts a positive integer or real N and returns a number of the
|
||||||
same type between zero (inclusive) and N (exclusive). The values
|
same type between zero (inclusive) and N (exclusive). The values
|
||||||
returned have a uniform distribution.
|
returned have a uniform distribution.
|
||||||
|
@ -848,7 +894,7 @@ of the variable `*random-state*'. This object is used to maintain the
|
||||||
state of the pseudo-random-number generator and is altered as a side
|
state of the pseudo-random-number generator and is altered as a side
|
||||||
effect of the `random' operation.
|
effect of the `random' operation.
|
||||||
|
|
||||||
** New variable: *random-state*
|
*** New variable: *random-state*
|
||||||
Holds a data structure that encodes the internal state of the
|
Holds a data structure that encodes the internal state of the
|
||||||
random-number generator that `random' uses by default. The nature
|
random-number generator that `random' uses by default. The nature
|
||||||
of this data structure is implementation-dependent. It may be
|
of this data structure is implementation-dependent. It may be
|
||||||
|
@ -856,23 +902,23 @@ printed out and successfully read back in, but may or may not
|
||||||
function correctly as a random-number state object in another
|
function correctly as a random-number state object in another
|
||||||
implementation.
|
implementation.
|
||||||
|
|
||||||
** New function: copy-random-state [STATE]
|
*** New function: copy-random-state [STATE]
|
||||||
Returns a new object of type suitable for use as the value of the
|
Returns a new object of type suitable for use as the value of the
|
||||||
variable `*random-state*' and as a second argument to `random'.
|
variable `*random-state*' and as a second argument to `random'.
|
||||||
If argument STATE is given, a copy of it is returned. Otherwise a
|
If argument STATE is given, a copy of it is returned. Otherwise a
|
||||||
copy of `*random-state*' is returned.
|
copy of `*random-state*' is returned.
|
||||||
|
|
||||||
** New function: seed->random-state SEED
|
*** New function: seed->random-state SEED
|
||||||
Returns a new object of type suitable for use as the value of the
|
Returns a new object of type suitable for use as the value of the
|
||||||
variable `*random-state*' and as a second argument to `random'.
|
variable `*random-state*' and as a second argument to `random'.
|
||||||
SEED is a string or a number. A new state is generated and
|
SEED is a string or a number. A new state is generated and
|
||||||
initialized using SEED.
|
initialized using SEED.
|
||||||
|
|
||||||
** New function: random:uniform [STATE]
|
*** New function: random:uniform [STATE]
|
||||||
Returns an uniformly distributed inexact real random number in the
|
Returns an uniformly distributed inexact real random number in the
|
||||||
range between 0 and 1.
|
range between 0 and 1.
|
||||||
|
|
||||||
** New procedure: random:solid-sphere! VECT [STATE]
|
*** New procedure: random:solid-sphere! VECT [STATE]
|
||||||
Fills VECT with inexact real random numbers the sum of whose
|
Fills VECT with inexact real random numbers the sum of whose
|
||||||
squares is less than 1.0. Thinking of VECT as coordinates in
|
squares is less than 1.0. Thinking of VECT as coordinates in
|
||||||
space of dimension N = `(vector-length VECT)', the coordinates are
|
space of dimension N = `(vector-length VECT)', the coordinates are
|
||||||
|
@ -880,24 +926,24 @@ uniformly distributed within the unit N-shere. The sum of the
|
||||||
squares of the numbers is returned. VECT can be either a vector
|
squares of the numbers is returned. VECT can be either a vector
|
||||||
or a uniform vector of doubles.
|
or a uniform vector of doubles.
|
||||||
|
|
||||||
** New procedure: random:hollow-sphere! VECT [STATE]
|
*** New procedure: random:hollow-sphere! VECT [STATE]
|
||||||
Fills VECT with inexact real random numbers the sum of whose squares
|
Fills VECT with inexact real random numbers the sum of whose squares
|
||||||
is equal to 1.0. Thinking of VECT as coordinates in space of
|
is equal to 1.0. Thinking of VECT as coordinates in space of
|
||||||
dimension n = `(vector-length VECT)', the coordinates are uniformly
|
dimension n = `(vector-length VECT)', the coordinates are uniformly
|
||||||
distributed over the surface of the unit n-shere. VECT can be either
|
distributed over the surface of the unit n-shere. VECT can be either
|
||||||
a vector or a uniform vector of doubles.
|
a vector or a uniform vector of doubles.
|
||||||
|
|
||||||
** New function: random:normal [STATE]
|
*** New function: random:normal [STATE]
|
||||||
Returns an inexact real in a normal distribution with mean 0 and
|
Returns an inexact real in a normal distribution with mean 0 and
|
||||||
standard deviation 1. For a normal distribution with mean M and
|
standard deviation 1. For a normal distribution with mean M and
|
||||||
standard deviation D use `(+ M (* D (random:normal)))'.
|
standard deviation D use `(+ M (* D (random:normal)))'.
|
||||||
|
|
||||||
** New procedure: random:normal-vector! VECT [STATE]
|
*** New procedure: random:normal-vector! VECT [STATE]
|
||||||
Fills VECT with inexact real random numbers which are independent and
|
Fills VECT with inexact real random numbers which are independent and
|
||||||
standard normally distributed (i.e., with mean 0 and variance 1).
|
standard normally distributed (i.e., with mean 0 and variance 1).
|
||||||
VECT can be either a vector or a uniform vector of doubles.
|
VECT can be either a vector or a uniform vector of doubles.
|
||||||
|
|
||||||
** New function: random:exp STATE
|
*** New function: random:exp STATE
|
||||||
Returns an inexact real in an exponential distribution with mean 1.
|
Returns an inexact real in an exponential distribution with mean 1.
|
||||||
For an exponential distribution with mean U use (* U (random:exp)).
|
For an exponential distribution with mean U use (* U (random:exp)).
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue