1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-20 11:40:18 +02:00

fold in feedback to api-languages

* doc/ref/api-languages.texi: Fold in feedback.
This commit is contained in:
Andy Wingo 2010-04-16 17:43:42 +02:00
parent b390b00834
commit 4bd4b6e67f

View file

@ -13,9 +13,10 @@ number of other languages. Currently supported languages include Emacs
Lisp and ECMAScript. Lisp and ECMAScript.
Guile is still fundamentally a Scheme, but it tries to support a wide Guile is still fundamentally a Scheme, but it tries to support a wide
variety of language building-blocks, so that a user can implement other variety of language building-blocks, so that other languages can be
languages on top of Guile. This section describes the languages that implemented on top of Guile. This allows users to write or extend
have been implemented. applications in languages other than Scheme, too. This section describes
the languages that have been implemented.
(For details on how to implement a language, @xref{Compiling to the (For details on how to implement a language, @xref{Compiling to the
Virtual Machine}.) Virtual Machine}.)
@ -31,7 +32,8 @@ Virtual Machine}.)
@subsection Using Other Languages @subsection Using Other Languages
There are currently only two ways to access other languages from within There are currently only two ways to access other languages from within
Guile: at the REPL, and via @code{compile} or @code{compile-file}. Guile: at the REPL, and programmatically, via @code{compile},
@code{read-and-compile}, and @code{compile-file}.
The REPL is Guile's command prompt (@pxref{Using Guile Interactively}). The REPL is Guile's command prompt (@pxref{Using Guile Interactively}).
The REPL has a concept of the ``current language'', which defaults to The REPL has a concept of the ``current language'', which defaults to
@ -132,7 +134,7 @@ version of @code{fold} written in Elisp can fold over a
@code{'()}-terminated list, as made by Scheme. @code{'()}-terminated list, as made by Scheme.
On a low level, the bit representations for @code{#f}, @code{#t}, On a low level, the bit representations for @code{#f}, @code{#t},
@code{nil}, and @code{'()} are made in such a way that the differ by @code{nil}, and @code{'()} are made in such a way that they differ by
only one bit, and so a test for, for example, @code{#f}-or-@code{nil} only one bit, and so a test for, for example, @code{#f}-or-@code{nil}
may be made very efficiently. See @code{libguile/boolean.h}, for more may be made very efficiently. See @code{libguile/boolean.h}, for more
information. information.
@ -240,17 +242,27 @@ Guile can warn when compiling code that has equality comparisons with
@node Dynamic Binding @node Dynamic Binding
@subsubsection Dynamic Binding @subsubsection Dynamic Binding
In contrast to Scheme, which uses ``lexical scoping'', Emacs Lisp scopes
its variables dynamically. Guile supports dynamic scoping with its
``fluids'' facility. @xref{Fluids and Dynamic States}, for more
information.
@node Other Elisp Features @node Other Elisp Features
@subsubsection Other Elisp Features @subsubsection Other Elisp Features
Buffer-local and mode-local variables should be mentioned here, along
with buckybits on characters, Emacs primitive data types, the
Lisp-2-ness of Elisp, and other things. Contributions to the
documentation are most welcome!
@node ECMAScript @node ECMAScript
@subsection ECMAScript @subsection ECMAScript
ECMAScript was not the first non-Schemey language implemented by Guile, @url{http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf,ECMAScript}
but it was the first implemented for Guile's bytecode compiler. The goal was not the first non-Schemey language implemented by Guile, but it was
was to support ECMAScript version 3.1, a relatively small language, but the first implemented for Guile's bytecode compiler. The goal was to
the implementor was completely irresponsible and got distracted by other support ECMAScript version 3.1, a relatively small language, but the
implementor was completely irresponsible and got distracted by other
things before finishing the standard library, and even some bits of the things before finishing the standard library, and even some bits of the
syntax. So, ECMAScript does deserve a mention in the manual, but it syntax. So, ECMAScript does deserve a mention in the manual, but it
doesn't deserve an endorsement until its implementation is completed, doesn't deserve an endorsement until its implementation is completed,