summaryrefslogtreecommitdiff
path: root/doc/ref/api-languages.texi
diff options
context:
space:
mode:
Diffstat (limited to 'doc/ref/api-languages.texi')
-rw-r--r--doc/ref/api-languages.texi48
1 files changed, 24 insertions, 24 deletions
diff --git a/doc/ref/api-languages.texi b/doc/ref/api-languages.texi
index 763e79859..2114258e5 100644
--- a/doc/ref/api-languages.texi
+++ b/doc/ref/api-languages.texi
@@ -8,13 +8,13 @@
@section Support for Other Languages
In addition to Scheme, a user may write a Guile program in an increasing
-number of other languages. Currently supported languages include Emacs
+number of other languages. Currently supported languages include Emacs
Lisp and ECMAScript.
Guile is still fundamentally a Scheme, but it tries to support a wide
variety of language building-blocks, so that other languages can be
-implemented on top of Guile. This allows users to write or extend
-applications in languages other than Scheme, too. This section describes
+implemented on top of Guile. This allows users to write or extend
+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
@@ -36,7 +36,7 @@ Guile: at the REPL, and programmatically, via @code{compile},
The REPL is Guile's command prompt (@pxref{Using Guile Interactively}).
The REPL has a concept of the ``current language'', which defaults to
-Scheme. The user may change that language, via the meta-command
+Scheme. The user may change that language, via the meta-command
@code{,language}.
For example, the following meta-command enables Emacs Lisp input:
@@ -64,9 +64,9 @@ Lispy languages, which have a straightforward datum representation.
Other languages that need more parsing are better dealt with as strings.
The easiest way to deal with syntax-heavy language is with files, via
-@code{compile-file} and friends. However it is possible to invoke a
+@code{compile-file} and friends. However it is possible to invoke a
language's reader on a port, and then compile the resulting expression
-(which is a datum at that point). For more information,
+(which is a datum at that point). For more information,
@xref{Compilation}.
For more details on introspecting aspects of different languages,
@@ -76,16 +76,16 @@ For more details on introspecting aspects of different languages,
@subsection Emacs Lisp
Emacs Lisp (Elisp) is a dynamically-scoped Lisp dialect used in the
-Emacs editor. @xref{top,,Overview,elisp,Emacs Lisp}, for more
+Emacs editor. @xref{top,,Overview,elisp,Emacs Lisp}, for more
information on Emacs Lisp.
We hope that eventually Guile's implementation of Elisp will be good
-enough to replace Emacs' own implementation of Elisp. For that reason,
+enough to replace Emacs' own implementation of Elisp. For that reason,
we have thought long and hard about how to support the various features
of Elisp in a performant and compatible manner.
Readers familiar with Emacs Lisp might be curious about how exactly
-these various Elisp features are supported in Guile. The rest of this
+these various Elisp features are supported in Guile. The rest of this
section focuses on addressing these concerns of the Elisp elect.
@menu
@@ -103,8 +103,8 @@ It is false, and it is the end-of-list; thus it is a boolean, and a list
as well.
Guile has chosen to support @code{nil} as a separate value, distinct
-from @code{#f} and @code{'()}. This allows existing Scheme and Elisp
-code to maintain their current semantics. @code{nil}, which in Elisp
+from @code{#f} and @code{'()}. This allows existing Scheme and Elisp
+code to maintain their current semantics. @code{nil}, which in Elisp
would just be written and read as @code{nil}, in Scheme has the external
representation @code{#nil}.
@@ -127,7 +127,7 @@ Emacs Lisp code, else return @code{#f}.
@end deffn
This decision to have @code{nil} as a low-level distinct value
-facilitates interoperability between the two languages. Guile has chosen
+facilitates interoperability between the two languages. Guile has chosen
to have Scheme deal with @code{nil} as follows:
@example
@@ -146,14 +146,14 @@ scm_is_null (SCM_ELISP_NIL) @result{} 1
In this way, a version of @code{fold} written in Scheme can correctly
fold a function written in Elisp (or in fact any other language) over a
-nil-terminated list, as Elisp makes. The converse holds as well; a
+nil-terminated list, as Elisp makes. The converse holds as well; a
version of @code{fold} written in Elisp can fold over a
@code{'()}-terminated list, as made by Scheme.
On a low level, the bit representations for @code{#f}, @code{#t},
@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}
-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.
@subsubheading Equality
@@ -189,8 +189,8 @@ However, in Elisp, @code{'()}, @code{#f}, and @code{nil} are all
@end example
These choices facilitate interoperability between Elisp and Scheme code,
-but they are not perfect. Some code that is correct standard Scheme is
-not correct in the presence of a second false and null value. For
+but they are not perfect. Some code that is correct standard Scheme is
+not correct in the presence of a second false and null value. For
example:
@example
@@ -220,7 +220,7 @@ Here, @code{my-length} will raise an error if @var{l} is a
Both of these examples are correct standard Scheme, but, depending on
what they really want to do, they are not correct Guile Scheme.
Correctly written, they would test the @emph{properties} of falsehood or
-nullity, not the individual members of that set. That is to say, they
+nullity, not the individual members of that set. That is to say, they
should use @code{not} or @code{null?} to test for falsehood or nullity,
not @code{eq?} or @code{memv} or the like.
@@ -254,14 +254,14 @@ This problem has a mirror-image case in Elisp:
@end example
Guile can warn when compiling code that has equality comparisons with
-@code{#f}, @code{'()}, or @code{nil}. @xref{Compilation}, for details.
+@code{#f}, @code{'()}, or @code{nil}. @xref{Compilation}, for details.
@node 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
+its variables dynamically. Guile supports dynamic scoping with its
+``fluids'' facility. @xref{Fluids and Dynamic States}, for more
information.
@node Other Elisp Features
@@ -269,7 +269,7 @@ information.
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
+Lisp-2-ness of Elisp, and other things. Contributions to the
documentation are most welcome!
@node ECMAScript
@@ -277,11 +277,11 @@ documentation are most welcome!
@url{http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf,ECMAScript}
was not the first non-Schemey language implemented by Guile, but it was
-the first implemented for Guile's bytecode compiler. The goal was to
+the first implemented for Guile's bytecode compiler. The goal was to
support ECMAScript version 3.1, a relatively small language, but the
-implementor was completely irresponsible and got distracted by other
+implementer was completely irresponsible and got distracted by other
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,
perhaps by some more responsible hacker.