unofficial mirror of bug-guile@gnu.org 
 help / color / mirror / Atom feed
* Typos in the manual
@ 2011-02-08 20:25 Ralf Wildenhues
  2011-02-13  0:49 ` Neil Jerram
  0 siblings, 1 reply; 29+ messages in thread
From: Ralf Wildenhues @ 2011-02-08 20:25 UTC (permalink / raw)
  To: bug-guile

[-- Attachment #1: Type: text/plain, Size: 3311 bytes --]

Hello Guile developers,

I found a few typos in the manual, actually, comparatively very few for
the size of the manual!  The attached patches should fix them.  Please
be scrupulous, I'm not firm in Guile language details nor habits.

Note the first one may be mangled by email transport, which is why I
gziped it; it removes a non-ASCII character from the text.  It should be
possible to skip it if needed and use 'git am -3' on the rest.


There are a few things that I spotted that I didn't fix, either because
I didn't know which was the right way, or in cases that I've come to
know as contentious among developers.  It would be nice if you could go
over them and address them in one way or another.  Given consensus, I
might be prodded into patching some, but don't count on me.

- Word pairs you might want to review and/or maybe just use one set of:
    queuing vs. queueing,
    destructur.* vs. destruct.* vs. deconstr.*
    (unless they have different meanings of course),
    uninterned vs. non-internal,
    latin1 vs. latin-1,
    parsable vs. parseable.

- 'postpend': I'd replace this with 'append' throughout the tree
  (not just the manual).

- Some abbreviations are spelt creatively.  The Latin 'id est' is
  usually abbreviated 'i.e.' without an intervening space, and for good
  spacing you either need a comma right afterwards, or '@:'.  Same with
  'e.g.'.  Find lots of instances with:
    git grep '\<[Ii][. ]*e\.[^,@]'

  My personal preference is to use a comma when what follows is long or
  grammatically a full sentence, and '@:' otherwise.  (info texinfo "Not
  Ending a Sentence").

- The Guile manual seems quite eager in making up new words.  This is to
  some extent a tendency that just comes with hacking, and has both
  distinguished and entertaining aspects.  At the same time however, it
  can make things less accessible for new users, especially those with a
  foreign native language, who then have troubles looking such words up
  in some dictionary.  It starts with very simple things like 'dir' and
  'arg' which I assume nobody has a serious problem with, yet which I
  would always write as 'directory' and 'argument' in prose
  (cf. 'info standards "GNU Manuals"'; but this goes beyond that text).
  OTOH, things like 'unpermanent', 'cdring', and 'consing' are not easy
  to understand IMVHO.

- In the Autoconf section, several macros are added to the function
  index.  They come from doc/ref/autoconf{,-macros}.texi (one being
  generated from meta/guile.m4.  The macros are:
    PKG_CHECK_MODULES
    GUILE_PROGS
    GUILE_FLAGS
    GUILE_SITE_DIR
    GUILE_CHECK_RETVAL
    GUILE_MODULE_CHECK
    GUILE_MODULE_AVAILABLE
    GUILE_MODULE_REQUIRED
    GUILE_MODULE_EXPORTS
    GUILE_MODULE_REQUIRED_EXPORT

  The simplest way to fix this would be to adjust indices.texi to
  document that Autoconf macros and variables are also listed in this
  index.  Karl tells me that one should have less indices anyway for the
  autotools manuals (ideally just one), so this would seem like a step
  in the right direction.

- I love France and the Franc, but there will soon be kids that don't
  remember it, for which 'french currency string' will be a foreign
  concept.  It might be a good idea to update the example eventually.

Thanks for maintaining Guile,
Ralf

[-- Attachment #2: 0001-docs-remove-non-ASCII-space-from-docs.patch.gz --]
[-- Type: application/x-gunzip, Size: 688 bytes --]

[-- Attachment #3: 0002-docs-fix-typos-in-manual-and-a-couple-in-code-commen.patch --]
[-- Type: text/plain, Size: 41911 bytes --]

From a68a49404cdbc4be46d764374f79dfb8b6d93aaf Mon Sep 17 00:00:00 2001
From: Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
Date: Tue, 8 Feb 2011 21:20:57 +0100
Subject: [PATCH 2/5] docs: fix typos in manual, and a couple in code comments.

* doc/ref/api-binding.texi, doc/ref/api-compound.texi,
doc/ref/api-control.texi, doc/ref/api-debug.texi,
doc/ref/api-io.texi, doc/ref/api-macros.texi,
doc/ref/api-procedures.texi, doc/ref/api-scheduling.texi,
doc/ref/api-undocumented.texi, doc/ref/api-utility.texi,
doc/ref/compiler.texi, doc/ref/goops.texi,
doc/ref/libguile-concepts.texi, doc/ref/misc-modules.texi,
doc/ref/posix.texi, doc/ref/r6rs.texi, doc/ref/slib.texi,
doc/ref/srfi-modules.texi, doc/ref/sxml-match.texi,
doc/ref/tools.texi, doc/ref/vm.texi, doc/ref/web.texi,
doc/sources/env.texi, doc/sources/jimb-org.texi,
doc/sources/scheme-concepts.texi, doc/sources/unix.texi,
module/ice-9/optargs.scm: Fix typos.
* doc/r4rs/r5rs.texi: Likewise.  Do not capitalize code symbols
even at the start of a sentence.
* doc/ref/api-data.texi: Likewise.  Also, remove executable bit.
---
 doc/r5rs/r5rs.texi               |    6 +++---
 doc/ref/api-binding.texi         |    2 +-
 doc/ref/api-compound.texi        |    8 ++++----
 doc/ref/api-control.texi         |    4 ++--
 doc/ref/api-data.texi            |   26 +++++++++++++-------------
 doc/ref/api-debug.texi           |    2 +-
 doc/ref/api-io.texi              |    4 ++--
 doc/ref/api-macros.texi          |    8 ++++----
 doc/ref/api-procedures.texi      |    2 +-
 doc/ref/api-scheduling.texi      |    2 +-
 doc/ref/api-undocumented.texi    |    6 +++---
 doc/ref/api-utility.texi         |    2 +-
 doc/ref/compiler.texi            |    8 ++++----
 doc/ref/goops.texi               |    4 ++--
 doc/ref/libguile-concepts.texi   |    2 +-
 doc/ref/misc-modules.texi        |    6 +++---
 doc/ref/posix.texi               |    2 +-
 doc/ref/r6rs.texi                |   10 +++++-----
 doc/ref/slib.texi                |    2 +-
 doc/ref/srfi-modules.texi        |   16 ++++++++--------
 doc/ref/sxml-match.texi          |    2 +-
 doc/ref/tools.texi               |    2 +-
 doc/ref/vm.texi                  |   10 +++++-----
 doc/ref/web.texi                 |    4 ++--
 doc/sources/env.texi             |    6 +++---
 doc/sources/jimb-org.texi        |    2 +-
 doc/sources/scheme-concepts.texi |    2 +-
 doc/sources/unix.texi            |    4 ++--
 module/ice-9/optargs.scm         |    2 +-
 29 files changed, 78 insertions(+), 78 deletions(-)
 mode change 100755 => 100644 doc/ref/api-data.texi

diff --git a/doc/r5rs/r5rs.texi b/doc/r5rs/r5rs.texi
index 605a976..1c3df60 100644
--- a/doc/r5rs/r5rs.texi
+++ b/doc/r5rs/r5rs.texi
@@ -4429,9 +4429,9 @@ all.
 These procedures are part of every implementation that supports
 @c %R4%%
 general
-real numbers; they compute the usual transcendental functions.  @samp{Log}
+real numbers; they compute the usual transcendental functions.  @samp{log}
 computes the natural logarithm of @var{z} (not the base ten logarithm).
-@samp{Asin}, @samp{acos}, and @samp{atan} compute arcsine (sin^-1),
+@samp{asin}, @samp{acos}, and @samp{atan} compute arcsine (sin^-1),
 arccosine (cos^-1), and arctangent (tan^-1), respectively.
 The two-argument variant of @samp{atan} computes @t{(angle
 (make-rectangular @var{x} @var{y}))} (see below), even in implementations
@@ -5988,7 +5988,7 @@ unspecified value.
 
 
 
-Vectors are heterogenous structures whose elements are indexed
+Vectors are heterogeneous structures whose elements are indexed
 by integers.  A vector typically occupies less space than a list
 of the same length, and the average time required to access a randomly
 chosen element is typically less for the vector than for the list.
diff --git a/doc/ref/api-binding.texi b/doc/ref/api-binding.texi
index 60af456..a954f4d 100644
--- a/doc/ref/api-binding.texi
+++ b/doc/ref/api-binding.texi
@@ -142,7 +142,7 @@ The @var{init} expressions are not allowed to refer to any of the
 @var{variables}.
 @end deffn
 
-The other binding contructs are variations on the same theme: making new
+The other binding constructs are variations on the same theme: making new
 values, binding them to variables, and executing a body in that new,
 extended lexical context.
 
diff --git a/doc/ref/api-compound.texi b/doc/ref/api-compound.texi
index f5e8c97..e108da8 100644
--- a/doc/ref/api-compound.texi
+++ b/doc/ref/api-compound.texi
@@ -909,7 +909,7 @@ Sets the element at position @var{idx} in the simple vector
 Acquire a handle for the vector @var{vec} and return a pointer to the
 elements of it.  This pointer can only be used to read the elements of
 @var{vec}.  When @var{vec} is not a vector, an error is signaled.  The
-handle mustr eventually be released with
+handle must eventually be released with
 @code{scm_array_handle_release}.
 
 The variables pointed to by @var{lenp} and @var{incp} are filled with
@@ -1820,7 +1820,7 @@ have smaller rank than @var{array}.
 @subsubsection Accessing Arrays from C
 
 Arrays, especially uniform numeric arrays, are useful to efficiently
-represent large amounts of rectangularily organized information, such as
+represent large amounts of information organized in a rectangular way, such as
 matrices, images, or generally blobs of binary data.  It is desirable to
 access these blobs in a C like manner so that they can be handed to
 external C code such as linear algebra libraries or image processing
@@ -2377,7 +2377,7 @@ to be stored along side usual Scheme @code{SCM} values.
 
 A vtable is a structure type, specifying its layout, and other
 information.  A vtable is actually itself a structure, but there's no
-need to worray about that initially (@pxref{Vtable Contents}.)
+need to worry about that initially (@pxref{Vtable Contents}.)
 
 @deffn {Scheme Procedure} make-vtable fields [print]
 Create a new vtable.
@@ -2786,7 +2786,7 @@ of tools for using either association lists or hash tables.
 @tpindex Alist
 @cindex association List
 @cindex alist
-@cindex aatabase
+@cindex database
 
 An association list is a conventional data structure that is often used
 to implement simple key-value databases.  It consists of a list of
diff --git a/doc/ref/api-control.texi b/doc/ref/api-control.texi
index 2375a64..7a5fb1e 100644
--- a/doc/ref/api-control.texi
+++ b/doc/ref/api-control.texi
@@ -148,7 +148,7 @@ and the last @var{clause} may have the form
 @end lisp
 
 All @var{datum}s must be distinct.  First, @var{key} is evaluated.  The
-the result of this evaluation is compared against all @var{datum}s using
+result of this evaluation is compared against all @var{datum} values using
 @code{eqv?}.  When this comparison succeeds, the expression(s) following
 the @var{datum} are evaluated from left to right, returning the value of
 the last expression as the result of the @code{case} expression.
@@ -1303,7 +1303,7 @@ frees the memory.  But once the memory is freed, we can not get it
 back on reentry.  Thus reentry can not be allowed.
 
 The consequence is that continuations become less useful when
-non-reenterable contexts are captured, but you don't need to worry
+non-reentrant contexts are captured, but you don't need to worry
 about that too much.
 
 The context is ended either implicitly when a non-local exit happens,
diff --git a/doc/ref/api-data.texi b/doc/ref/api-data.texi
old mode 100755
new mode 100644
index 9b065a5..8c50941
--- a/doc/ref/api-data.texi
+++ b/doc/ref/api-data.texi
@@ -225,8 +225,8 @@ rational is also real, and every real number is also a complex number
 In addition to the classification into integers, rationals, reals and
 complex numbers, Scheme also distinguishes between whether a number is
 represented exactly or not.  For example, the result of
-@m{2\sin(\pi/4),2*sin(pi/4)} is exactly @m{\sqrt{2},2^(1/2)}, but Guile
-can represent neither @m{\pi/4,pi/4} nor @m{\sqrt{2},2^(1/2)} exactly.
+@m{2\sin(\pi/4),2*sin(pi/4)} is exactly @m{\sqrt2,2^(1/2)}, but Guile
+can represent neither @m{\pi/4,pi/4} nor @m{\sqrt2,2^(1/2)} exactly.
 Instead, it stores an inexact approximation, using the C type
 @code{double}.
 
@@ -572,7 +572,7 @@ is an integer number or a rational number.
 @deffnx {C Function} scm_rational_p (x)
 Return @code{#t} if @var{x} is a rational number, @code{#f} otherwise.
 Note that the set of integer values forms a subset of the set of
-rational numbers, i. e. the predicate will also be fulfilled if
+rational numbers, i.e.@: the predicate will also be fulfilled if
 @var{x} is an integer number.
 @end deffn
 
@@ -1155,7 +1155,7 @@ Returns the magnitude or angle of @var{z} as a @code{double}.
 The C arithmetic functions below always takes two arguments, while the
 Scheme functions can take an arbitrary number.  When you need to
 invoke them with just one argument, for example to compute the
-equivalent od @code{(- x)}, pass @code{SCM_UNDEFINED} as the second
+equivalent of @code{(- x)}, pass @code{SCM_UNDEFINED} as the second
 one: @code{scm_difference (x, SCM_UNDEFINED)}.
 
 @c begin (texi-doc-string "guile" "+")
@@ -1327,7 +1327,7 @@ including complex numbers.
 @c begin (texi-doc-string "guile" "sqrt")
 @deffn {Scheme Procedure} sqrt z
 Return the square root of @var{z}.  Of the two possible roots
-(positive and negative), the one with the a positive real part is
+(positive and negative), the one with the positive real part is
 returned, or if that's zero then a positive imaginary part.  Thus,
 
 @example
@@ -2989,7 +2989,7 @@ Convert the string @var{str} into a list of characters.
 
 @deffn {Scheme Procedure} string-split str chr
 @deffnx {C Function} scm_string_split (str, chr)
-Split the string @var{str} into the a list of the substrings delimited
+Split the string @var{str} into the list of the substrings delimited
 by appearances of the character @var{chr}.  Note that an empty substring
 between separator characters will result in an empty string in the
 result list.
@@ -3422,12 +3422,12 @@ case-insensitively.
 
 @deffn {Scheme Procedure} string-hash s [bound [start [end]]]
 @deffnx {C Function} scm_substring_hash (s, bound, start, end)
-Compute a hash value for @var{S}.  the optional argument @var{bound} is a non-negative exact integer specifying the range of the hash function. A positive value restricts the return value to the range [0,bound).
+Compute a hash value for @var{S}.  The optional argument @var{bound} is a non-negative exact integer specifying the range of the hash function. A positive value restricts the return value to the range [0,bound).
 @end deffn
 
 @deffn {Scheme Procedure} string-hash-ci s [bound [start [end]]]
 @deffnx {C Function} scm_substring_hash_ci (s, bound, start, end)
-Compute a hash value for @var{S}.  the optional argument @var{bound} is a non-negative exact integer specifying the range of the hash function. A positive value restricts the return value to the range [0,bound).
+Compute a hash value for @var{S}.  The optional argument @var{bound} is a non-negative exact integer specifying the range of the hash function. A positive value restricts the return value to the range [0,bound).
 @end deffn
 
 Because the same visual appearance of an abstract Unicode character can 
@@ -3449,7 +3449,7 @@ Unicode Standard; and composition, which performs the converse.
 
 There are two decomposition operations.  ``Canonical decomposition'' 
 produces character sequences that share the same visual appearance as
-the original characters, while ``compatiblity decomposition'' produces
+the original characters, while ``compatibility decomposition'' produces
 ones whose visual appearances may differ from the originals but which
 represent the same abstract character.
 
@@ -4069,7 +4069,7 @@ If a character in @var{str} cannot be represented in the locale encoding
 of the current output port, the port conversion strategy of the current
 output port will determine the result, @xref{Ports}.  If output port's
 conversion strategy is @code{error}, an error will be raised.  If it is
-@code{subsitute}, a replacement character, such as a question mark, will
+@code{substitute}, a replacement character, such as a question mark, will
 be inserted in its place.  If it is @code{escape}, a hex escape will be
 inserted in its place.
 @end deftypefn
@@ -4550,7 +4550,7 @@ representing the contents of @var{bv}, decoded according to
 @deffnx {Scheme Procedure} sint-list->bytevector lst endianness size
 @deffnx {C Function} scm_uint_list_to_bytevector (lst, endianness, size)
 @deffnx {C Function} scm_sint_list_to_bytevector (lst, endianness, size)
-Return a new bytevector containing the unsigned (resp. signed) integers
+Return a new bytevector containing the unsigned (resp.@: signed) integers
 listed in @var{lst} and encoded on @var{size} bytes according to
 @var{endianness}.
 @end deffn
@@ -5128,8 +5128,8 @@ Guile currently retains some elements of the traditional structure in
 case they turn out to be useful when implementing translators for other
 languages, in particular Emacs Lisp.
 
-Specifically, Guile symbols have two extra slots. for a symbol's
-property list, and for its ``function value.''  The following procedures
+Specifically, Guile symbols have two extra slots, one for a symbol's
+property list, and one for its ``function value.''  The following procedures
 are provided to access these slots.
 
 @deffn {Scheme Procedure} symbol-fref symbol
diff --git a/doc/ref/api-debug.texi b/doc/ref/api-debug.texi
index 7efbb75..765b4ad 100644
--- a/doc/ref/api-debug.texi
+++ b/doc/ref/api-debug.texi
@@ -1030,7 +1030,7 @@ of an application of @var{proc}.
 
 @deffn {Scheme Procedure} trap-instructions-in-dynamic-extent proc @
        next-handler [#:current-frame] [#:vm] [#:closure?]
-A trap that calls @var{next-handler} for all retired intructions within
+A trap that calls @var{next-handler} for all retired instructions within
 the dynamic extent of a call to @var{proc}.
 @end deffn
 
diff --git a/doc/ref/api-io.texi b/doc/ref/api-io.texi
index e02daeb..52dfdd4 100644
--- a/doc/ref/api-io.texi
+++ b/doc/ref/api-io.texi
@@ -871,7 +871,7 @@ requested, @code{open-file} throws an exception.
 When the file is opened, this procedure will scan for a coding
 declaration (@pxref{Character Encoding of Source Files}). If present
 will use that encoding for interpreting the file.  Otherwise, the
-port's encoding will be used.  To supress this behavior, open
+port's encoding will be used.  To suppress this behavior, open
 the file in binary mode and then set the port encoding explicitly
 using @code{set-port-encoding!}.
 
@@ -976,7 +976,7 @@ Determine whether @var{obj} is a port that is related to a file.
 @cindex String port
 @cindex Port, string
 
-The following allow string ports to be opened by analogy to R4R*
+The following allow string ports to be opened by analogy to R4RS
 file port facilities:
 
 With string ports, the port-encoding is treated differently than other
diff --git a/doc/ref/api-macros.texi b/doc/ref/api-macros.texi
index 5f15fb7..f0eeb6e 100644
--- a/doc/ref/api-macros.texi
+++ b/doc/ref/api-macros.texi
@@ -299,7 +299,7 @@ expression.
 
 This property is sometimes known as @dfn{hygiene}, and it does aid in code
 cleanliness. In your macro definitions, you can feel free to introduce temporary
-variables, without worrying about inadvertantly introducing bindings into the
+variables, without worrying about inadvertently introducing bindings into the
 macro expansion.
 
 Consider the definition of @code{my-or} from the previous section:
@@ -461,7 +461,7 @@ found @var{exp} referenced outside a @code{syntax} form.
 
 Since @code{syntax} appears frequently in macro-heavy code, it has a special
 reader macro: @code{#'}. @code{#'foo} is transformed by the reader into
-@code{(syntax foo)}, just as @code{'foo} is tranformed into @code{(quote foo)}.
+@code{(syntax foo)}, just as @code{'foo} is transformed into @code{(quote foo)}.
 
 The pattern language used by @code{syntax-case} is conveniently the same
 language used by @code{syntax-rules}. Given this, Guile actually defines
@@ -763,7 +763,7 @@ macro. @code{syntax-rules} provides some syntax to effect this transformation
 more easily.
 
 @deffn {Syntax} identifier-syntax exp
-Returns a macro transformer that will replace occurences of the macro with
+Returns a macro transformer that will replace occurrences of the macro with
 @var{exp}.
 @end deffn
 
@@ -814,7 +814,7 @@ bar-alias @result{} 30
 @end example
 @end deffn
 
-There is an extension to identifer-syntax which allows it to handle the
+There is an extension to identifier-syntax which allows it to handle the
 @code{set!} case as well:
 
 @deffn {Syntax} identifier-syntax (var exp1) ((set! var val) exp2)
diff --git a/doc/ref/api-procedures.texi b/doc/ref/api-procedures.texi
index c087f4c..02889c4 100644
--- a/doc/ref/api-procedures.texi
+++ b/doc/ref/api-procedures.texi
@@ -489,7 +489,7 @@ take @code{lambda*}-style extended parameter lists, where @code{#:optional},
 semantics. Here is an example of a macro with an optional argument:
 
 @lisp
-(defmacro* transmorgify (a #:optional b)
+(defmacro* transmogrify (a #:optional b)
   (a 1))
 @end lisp
 @end deffn
diff --git a/doc/ref/api-scheduling.texi b/doc/ref/api-scheduling.texi
index 248d8b7..f7ba508 100644
--- a/doc/ref/api-scheduling.texi
+++ b/doc/ref/api-scheduling.texi
@@ -743,7 +743,7 @@ Set @var{fluids} to @var{values} temporary, and call @var{thunk}.
 @var{fluids} must be a list of fluids and @var{values} must be the
 same number of their values to be applied.  Each substitution is done
 in the order given.  @var{thunk} must be a procedure with no argument.
-it is called inside a @code{dynamic-wind} and the fluids are
+It is called inside a @code{dynamic-wind} and the fluids are
 set/restored when control enter or leaves the established dynamic
 extent.
 @end deffn
diff --git a/doc/ref/api-undocumented.texi b/doc/ref/api-undocumented.texi
index 774061d..1e36ad8 100644
--- a/doc/ref/api-undocumented.texi
+++ b/doc/ref/api-undocumented.texi
@@ -568,7 +568,7 @@ as @var{array}, if used as the @var{prototype} for
 
 @deffn {Scheme Procedure} call-with-dynamic-root thunk handler
 @deffnx {C Function} scm_call_with_dynamic_root (thunk, handler)
-Call @var{thunk} with a new dynamic state and withina continuation barrier.  The @var{handler} catches allotherwise uncaught throws and executes within the samedynamic context as @var{thunk}.
+Call @var{thunk} with a new dynamic state and within a continuation barrier.  The @var{handler} catches all otherwise uncaught throws and executes within the same dynamic context as @var{thunk}.
 @end deffn
 
 @deffn {Scheme Procedure} dynamic-root
@@ -587,13 +587,13 @@ Return @code{#t} if @var{obj} is a uniform vector.
 @deffn {Scheme Procedure} uniform-vector-ref v idx
 @deffnx {C Function} scm_uniform_vector_ref (v, idx)
 Return the element at index @var{idx} of the
-homogenous numeric vector @var{v}.
+homogeneous numeric vector @var{v}.
 @end deffn
 
 @deffn {Scheme Procedure} uniform-vector-set! v idx val
 @deffnx {C Function} scm_uniform_vector_set_x (v, idx, val)
 Set the element at index @var{idx} of the
-homogenous numeric vector @var{v} to @var{val}.
+homogeneous numeric vector @var{v} to @var{val}.
 @end deffn
 
 @deffn {Scheme Procedure} uniform-vector->list uvec
diff --git a/doc/ref/api-utility.texi b/doc/ref/api-utility.texi
index 8fdfb22..fb747ee 100644
--- a/doc/ref/api-utility.texi
+++ b/doc/ref/api-utility.texi
@@ -432,7 +432,7 @@ copies any pairs in the cars of the input lists.
 
 @deffn {Scheme Procedure} copy-tree obj
 @deffnx {C Function} scm_copy_tree (obj)
-Recursively copy the data tree that is bound to @var{obj}, and return a
+Recursively copy the data tree that is bound to @var{obj}, and return
 the new data structure.  @code{copy-tree} recurses down the
 contents of both pairs and vectors (since both cons cells and vector
 cells may point to arbitrary objects), and stops recursing when it hits
diff --git a/doc/ref/compiler.texi b/doc/ref/compiler.texi
index b3a1dc6..3c35cc8 100644
--- a/doc/ref/compiler.texi
+++ b/doc/ref/compiler.texi
@@ -295,7 +295,7 @@ Properties}, for more information.
 
 Although Tree-IL objects are represented internally using records,
 there is also an equivalent S-expression external representation for
-each kind of Tree-IL. For example, an the S-expression representation
+each kind of Tree-IL. For example, the S-expression representation
 of @code{#<const src: #f exp: 3>} expression would be:
 
 @example
@@ -418,7 +418,7 @@ argument, or @code{#f}.
 (@var{keyword} @var{name} @var{var}) ...)}, where @var{keyword} is the
 keyword corresponding to the argument named @var{name}, and whose
 corresponding gensym is @var{var}. @var{inits} are tree-il expressions
-corresponding to all of the optional and keyword argumens, evaluated
+corresponding to all of the optional and keyword arguments, evaluated
 to bind variables whose value is not supplied by the procedure caller.
 Each @var{init} expression is evaluated in the lexical context of
 previously bound variables, from left to right.
@@ -855,7 +855,7 @@ for more information about the Brainfuck language itself.
 At this point, we break with the impersonal tone of the rest of the
 manual, and make an intervention. Admit it: if you've read this far
 into the compiler internals manual, you are a junkie. Perhaps a course
-at your university left you unsated, or perhaps you've always harbored
+at your university left you unsatisfied, or perhaps you've always harbored
 a sublimated desire to hack the holy of computer science holies: a
 compiler. Well you're in good company, and in a good position. Guile's
 compiler needs your help.
@@ -877,7 +877,7 @@ next step.
 The compiler also needs help at the top end, enhancing the Scheme that
 it knows to also understand R6RS, and adding new high-level compilers.
 We have JavaScript and Emacs Lisp mostly complete, but they could use
-some love; Lua would be nice as well, butq whatever language it is
+some love; Lua would be nice as well, but whatever language it is
 that strikes your fancy would be welcome too.
 
 Compilers are for hacking, not for admiring or for complaining about.
diff --git a/doc/ref/goops.texi b/doc/ref/goops.texi
index 0dd7b0e..381dfe9 100644
--- a/doc/ref/goops.texi
+++ b/doc/ref/goops.texi
@@ -535,7 +535,7 @@ other.  A better solution is to use virtual slots, like this:
 
 @end lisp
 
-In this class definition, the magniture @code{m} and angle @code{a}
+In this class definition, the magnitude @code{m} and angle @code{a}
 slots are virtual, and are calculated, when referenced, from the normal
 (i.e. @code{#:allocation #:instance}) slots @code{r} and @code{i}, by
 calling the function defined in the relevant @code{#:slot-ref} option.
@@ -619,7 +619,7 @@ different sets of specializing argument classes; for example:
 @lisp
 (define-method (+ (x <string>) (y <string)) ...)
 (define-method (+ (x <matrix>) (y <matrix>)) ...)
-(define-method (+ (f <fish>) (b <bicyle>)) ...)
+(define-method (+ (f <fish>) (b <bicycle>)) ...)
 (define-method (+ (a <foo>) (b <bar>) (c <baz>)) ...)
 @end lisp
 
diff --git a/doc/ref/libguile-concepts.texi b/doc/ref/libguile-concepts.texi
index 1e4cb1e..6ebeb63 100644
--- a/doc/ref/libguile-concepts.texi
+++ b/doc/ref/libguile-concepts.texi
@@ -515,7 +515,7 @@ modified in another thread while the loop iterates over it.  Thus, while
 copying its elements into the vector, the list might get longer or
 shorter.  For this reason, the loop must check both that it doesn't
 overrun the vector (@code{SCM_SIMPLE_VECTOR_SET} does no range-checking)
-and that it doesn't overrung the list (@code{SCM_CAR} and @code{SCM_CDR}
+and that it doesn't overrun the list (@code{SCM_CAR} and @code{SCM_CDR}
 likewise do no type checking).
 
 It is safe to use @code{SCM_CAR} and @code{SCM_CDR} on the local
diff --git a/doc/ref/misc-modules.texi b/doc/ref/misc-modules.texi
index 7071dad..fc35ff8 100644
--- a/doc/ref/misc-modules.texi
+++ b/doc/ref/misc-modules.texi
@@ -91,11 +91,11 @@ dots.}, or in the worst case, displayed as @nicode{#}.
 @deffn {Scheme Procedure} truncated-print obj [port] [keyword-options]
 Print @var{obj}, truncating the output, if necessary, to make it fit
 into @var{width} characters. By default, @var{x} will be printed using
-@code{write}, though that behavior can be overriden via the
+@code{write}, though that behavior can be overridden via the
 @var{display?} keyword argument.
 
 The default behaviour is to print depth-first, meaning that the entire
-remaining width will be available to each sub-expressoin of @var{x} --
+remaining width will be available to each sub-expression of @var{x} --
 e.g., if @var{x} is a vector, each member of @var{x}. One can attempt to
 ``ration'' the available width, trying to allocate it equally to each
 sub-expression, via the @var{breadth-first?} keyword argument.
@@ -1260,7 +1260,7 @@ The return value from @code{nftw} is @code{#t} if it ran to
 completion, or otherwise the non-@code{#t} value from @var{proc} which
 caused the stop.
 
-@c  For reference, one reason not to esacpe is that the current
+@c  For reference, one reason not to escape is that the current
 @c  directory is not saved and restored with dynamic-wind.  Maybe
 @c  changing that would be enough to allow escaping.
 @c
diff --git a/doc/ref/posix.texi b/doc/ref/posix.texi
index 4c43248..704fe63 100644
--- a/doc/ref/posix.texi
+++ b/doc/ref/posix.texi
@@ -2456,7 +2456,7 @@ When given, @var{hint_family} should specify the requested
 address family, e.g., @code{AF_INET6}.  Similarly,
 @var{hint_socktype} should specify the requested socket type
 (e.g., @code{SOCK_DGRAM}), and @var{hint_protocol} should
-specify the requested protocol (its value is interpretered
+specify the requested protocol (its value is interpreted
 as in calls to @code{socket}).
 
 On error, an exception with key @code{getaddrinfo-error} is
diff --git a/doc/ref/r6rs.texi b/doc/ref/r6rs.texi
index ffd238d..4df05e0 100644
--- a/doc/ref/r6rs.texi
+++ b/doc/ref/r6rs.texi
@@ -1125,7 +1125,7 @@ called on exceptions thrown by the corresponding @code{raise} procedure.
 
 @deffn {Scheme Procedure} with-exception-handler handler thunk
 Installs @var{handler}, which must be a procedure taking one argument,
-as the current exception handler during the invokation of @var{thunk}, a
+as the current exception handler during the invocation of @var{thunk}, a
 procedure taking zero arguments.  The handler in place at the time
 @code{with-exception-handler} is called is made current again once 
 either @var{thunk} returns or @var{handler} is invoked after an 
@@ -1290,7 +1290,7 @@ condition in a compound condition.
 @deffn {Condition Type} &who
 @deffnx {Scheme Procedure} make-who-condition who
 @deffnx {Scheme Procedure} who-condition? obj
-@deffnx {Scheme Procedure} condiction-who condition
+@deffnx {Scheme Procedure} condition-who condition
 A base type used for storing the identity, a string or symbol, of the
 entity responsible for another condition in a compound condition.
 @end deffn
@@ -1544,7 +1544,7 @@ value, and the maximum fixnum value.
 @deffnx {Scheme Procedure} fx<=? fx1 fx2 fx3 ...
 These procedures return @code{#t} if their fixnum arguments are
 (respectively): equal, monotonically increasing, monotonically
-decreasing, monotonically nondecreasing, or monotonically nonincrasing;
+decreasing, monotonically nondecreasing, or monotonically nonincreasing;
 @code{#f} otherwise.
 @end deffn
 
@@ -1716,7 +1716,7 @@ Returns the flonum that is numerically closest to the real number
 @deffnx {Scheme Procedure} fl>=? fl1 fl2 fl3 ...
 These procedures return @code{#t} if their flonum arguments are
 (respectively): equal, monotonically increasing, monotonically
-decreasing, monotonically nondecreasing, or monotonically nonincrasing;
+decreasing, monotonically nondecreasing, or monotonically nonincreasing;
 @code{#f} otherwise.
 @end deffn
 
@@ -1915,7 +1915,7 @@ in the direction of more significant bits.
 @end deffn
 
 @deffn {Scheme Procedure} bitwise-reverse-bit-field ei1 ei2 ei3
-Returns the result of reversing the order of the bits of @var{e1} 
+Returns the result of reversing the order of the bits of @var{ei1} 
 between position @var{ei2} (inclusive) and position @var{ei3} 
 (exclusive).
 @end deffn
diff --git a/doc/ref/slib.texi b/doc/ref/slib.texi
index 5fe382d..388dae1 100644
--- a/doc/ref/slib.texi
+++ b/doc/ref/slib.texi
@@ -55,7 +55,7 @@ Library}):
 @item
 Unpack SLIB and install it using @code{make install} from its directory.
 By default, this will install SLIB in @file{/usr/local/lib/slib/}.
-Running @code{make installinfo} installs its documentation, by default
+Running @code{make install-info} installs its documentation, by default
 under @file{/usr/local/info/}.
 
 @item
diff --git a/doc/ref/srfi-modules.texi b/doc/ref/srfi-modules.texi
index b214483..a6b98ee 100644
--- a/doc/ref/srfi-modules.texi
+++ b/doc/ref/srfi-modules.texi
@@ -391,13 +391,13 @@ Return a list containing all but the first @var{i} elements of
 @end deffn
 
 @deffn {Scheme Procedure} take-right lst i
-Return the a list containing the @var{i} last elements of @var{lst}.
+Return a list containing the @var{i} last elements of @var{lst}.
 The return shares a common tail with @var{lst}.
 @end deffn
 
 @deffn {Scheme Procedure} drop-right lst i
 @deffnx {Scheme Procedure} drop-right! lst i
-Return the a list containing all but the @var{i} last elements of
+Return a list containing all but the @var{i} last elements of
 @var{lst}.
 
 @code{drop-right} always returns a new list, even when @var{i} is
@@ -633,7 +633,7 @@ Determines when to stop unfolding.
 Maps each seed value to the corresponding list element.
 
 @item g
-Maps each seed value to next seed valu.
+Maps each seed value to next seed value.
 
 @item seed
 The state value for the unfold.
@@ -665,7 +665,7 @@ Determines when to stop unfolding.
 Maps each seed value to the corresponding list element.
 
 @item g
-Maps each seed value to next seed valu.
+Maps each seed value to next seed value.
 
 @item seed
 The state value for the unfold.
@@ -1678,7 +1678,7 @@ at the following odd index.
 @deftypefnx {C Function} {const scm_t_int32 *} scm_s32vector_elements (SCM vec, scm_t_array_handle *handle, size_t *lenp, ssize_t *incp)
 @deftypefnx {C Function} {const scm_t_uint64 *} scm_u64vector_elements (SCM vec, scm_t_array_handle *handle, size_t *lenp, ssize_t *incp)
 @deftypefnx {C Function} {const scm_t_int64 *} scm_s64vector_elements (SCM vec, scm_t_array_handle *handle, size_t *lenp, ssize_t *incp)
-@deftypefnx {C Function} {const float *} scm_f23vector_elements (SCM vec, scm_t_array_handle *handle, size_t *lenp, ssize_t *incp)
+@deftypefnx {C Function} {const float *} scm_f32vector_elements (SCM vec, scm_t_array_handle *handle, size_t *lenp, ssize_t *incp)
 @deftypefnx {C Function} {const double *} scm_f64vector_elements (SCM vec, scm_t_array_handle *handle, size_t *lenp, ssize_t *incp)
 @deftypefnx {C Function} {const float *} scm_c32vector_elements (SCM vec, scm_t_array_handle *handle, size_t *lenp, ssize_t *incp)
 @deftypefnx {C Function} {const double *} scm_c64vector_elements (SCM vec, scm_t_array_handle *handle, size_t *lenp, ssize_t *incp)
@@ -1695,7 +1695,7 @@ indicated kind.
 @deftypefnx {C Function} {scm_t_int32 *} scm_s32vector_writable_elements (SCM vec, scm_t_array_handle *handle, size_t *lenp, ssize_t *incp)
 @deftypefnx {C Function} {scm_t_uint64 *} scm_u64vector_writable_elements (SCM vec, scm_t_array_handle *handle, size_t *lenp, ssize_t *incp)
 @deftypefnx {C Function} {scm_t_int64 *} scm_s64vector_writable_elements (SCM vec, scm_t_array_handle *handle, size_t *lenp, ssize_t *incp)
-@deftypefnx {C Function} {float *} scm_f23vector_writable_elements (SCM vec, scm_t_array_handle *handle, size_t *lenp, ssize_t *incp)
+@deftypefnx {C Function} {float *} scm_f32vector_writable_elements (SCM vec, scm_t_array_handle *handle, size_t *lenp, ssize_t *incp)
 @deftypefnx {C Function} {double *} scm_f64vector_writable_elements (SCM vec, scm_t_array_handle *handle, size_t *lenp, ssize_t *incp)
 @deftypefnx {C Function} {float *} scm_c32vector_writable_elements (SCM vec, scm_t_array_handle *handle, size_t *lenp, ssize_t *incp)
 @deftypefnx {C Function} {double *} scm_c64vector_writable_elements (SCM vec, scm_t_array_handle *handle, size_t *lenp, ssize_t *incp)
@@ -1884,7 +1884,7 @@ The @var{fieldname}s provide the names for the record fields, as per
 the core @code{record-type-fields} etc, and are referred to in the
 subsequent accessor/modifier forms.
 
-@var{predictate} is bound to a function to be called as
+@var{predicate} is bound to a function to be called as
 @code{(@var{predicate} obj)}.  It returns @code{#t} or @code{#f}
 according to whether @var{obj} is a record of this type.
 
@@ -4117,7 +4117,7 @@ stream-filter algorithm, expressed in a hypothetical lazy language as
             (stream-filter p? t)))))
 @end lisp
 
-This algorithm can be espressed as follows in Scheme:
+This algorithm can be expressed as follows in Scheme:
 
 @lisp
 (define (stream-filter p? s)
diff --git a/doc/ref/sxml-match.texi b/doc/ref/sxml-match.texi
index f92331b..7b82e11 100644
--- a/doc/ref/sxml-match.texi
+++ b/doc/ref/sxml-match.texi
@@ -298,7 +298,7 @@ basic arithmetic operations, which are represented by the XML elements
 @end lisp
 
 Using the catamorphism feature of @code{sxml-match}, a more concise version of
-@code{simple-eval} can be written.  The pattern @code{,[x]} recusively invokes
+@code{simple-eval} can be written.  The pattern @code{,[x]} recursively invokes
 the pattern matcher on the value bound in this position.
 
 @lisp
diff --git a/doc/ref/tools.texi b/doc/ref/tools.texi
index 2158344..2f4f59a 100644
--- a/doc/ref/tools.texi
+++ b/doc/ref/tools.texi
@@ -252,7 +252,7 @@ functions.
 @node Writing your own snarfing macros
 @subsubsection Writing your own snarfing macros
 
-When you want to use the general snarfing machanism, but none of the
+When you want to use the general snarfing mechanism, but none of the
 provided macros fits your need, you can use the macro
 @code{SCM_SNARF_INIT}.
 
diff --git a/doc/ref/vm.texi b/doc/ref/vm.texi
index 2c279bf..51fe8c4 100644
--- a/doc/ref/vm.texi
+++ b/doc/ref/vm.texi
@@ -746,7 +746,7 @@ Jump to @var{offset} if the number of arguments is not equal to, greater
 than, or less than @var{n}. @var{n} is encoded over two bytes, and
 @var{offset} has the normal three-byte encoding.
 
-These instructions are used to implement muliple arities, as in
+These instructions are used to implement multiple arities, as in
 @code{case-lambda}. @xref{Case-lambda}, for more information.
 @end deffn
 
@@ -803,7 +803,7 @@ keyword arguments to their local variable indices.
 There are two bitflags that affect the parser, @code{allow-other-keys?}
 (@code{0x1}) and @code{rest?} (@code{0x2}). Unless
 @code{allow-other-keys?} is set, the parser will signal an error if an
-unknown key is found. If @code{rest?} is set, errors parsing the the
+unknown key is found. If @code{rest?} is set, errors parsing the
 keyword arguments will be ignored, as a later @code{bind-rest}
 instruction will collect all of the tail arguments, including the
 keywords, into a list. Otherwise if the keyword arguments are invalid,
@@ -940,7 +940,7 @@ Jump to @var{offset} if the object on the stack is not @code{'()}.
 @subsubsection Data Constructor Instructions
 
 These instructions push simple immediate values onto the stack,
-or constructo compound data structures from values the stack.
+or constructor compound data structures from values the stack.
 
 @deffn Instruction make-int8 value
 Push @var{value}, an 8-bit integer, onto the stack.
@@ -1067,7 +1067,7 @@ encoded in the ``latin1'' locale.
 @end deffn
 @deffn Instruction load-wide-string length
 Load a UTF-32 string from the instruction stream. @var{length} is the
-length in bytes, not in codepoints
+length in bytes, not in codepoints.
 @end deffn
 @deffn Instruction load-symbol length
 Load a symbol from the instruction stream. The symbol is assumed to be
@@ -1228,7 +1228,7 @@ Since most of these operations are historically implemented as C
 primitives, not inlining them would entail constantly calling out from
 the VM to the interpreter, which has some costs---registers must be
 saved, the interpreter has to dispatch, called procedures have to do
-much typechecking, etc. It's much more efficient to inline these
+much type checking, etc. It's much more efficient to inline these
 operations in the virtual machine itself.
 
 All of these instructions pop their arguments from the stack and push
diff --git a/doc/ref/web.texi b/doc/ref/web.texi
index e285c2a..c7018e9 100644
--- a/doc/ref/web.texi
+++ b/doc/ref/web.texi
@@ -762,7 +762,7 @@ list is itself a list, in the same format as @code{content-type}.
 (parse-header 'accept "text/html,text/plain;charset=utf-8")
 @result{} ((text/html) (text/plain (charset . "utf-8")))
 @end example
-Preference is expressed with qualitiy values:
+Preference is expressed with quality values:
 @example
 (parse-header 'accept "text/html;q=0.8,text/plain;q=0.6")
 @result{} ((text/html (q . 800)) (text/plain (q . 600)))
@@ -1008,7 +1008,7 @@ A string identifying the server.
 
 @deftypevr {HTTP Header} *|List vary
 A set of request headers that were used in computing this response.
-Used to indicate that server-side content negotation was performed, for
+Used to indicate that server-side content negotiation was performed, for
 example in response to the @code{accept-language} header.  Can also be
 the symbol @code{*}, indicating that all headers were considered.
 @example
diff --git a/doc/sources/env.texi b/doc/sources/env.texi
index 3f51568..a3efce2 100644
--- a/doc/sources/env.texi
+++ b/doc/sources/env.texi
@@ -80,7 +80,7 @@ we document the Scheme procedure only, and call it a "Primitive".  If a
 Scheme function is marked as a primitive, you can derive the name of the
 corresponding C function by changing @code{-} to @code{_}, @code{!} to
 @code{_x}, @code{?} to @code{_p}, and prepending @code{scm_}.  The C
-function's arguments will be all of the Scheme procedure's argumements,
+function's arguments will be all of the Scheme procedure's arguments,
 both required and optional; if the Scheme procedure takes a ``rest''
 argument, that will be a final argument to the C function.  The C
 function's arguments, as well as its return type, will be @code{SCM}.
@@ -735,7 +735,7 @@ changes the bindings of @var{local} or @var{imported}, those changes
 will be visible in @var{eval}.
 
 Since most Scheme evaluation takes place in @var{eval} environments,
-they transparenty cache the bindings received from @var{local} and
+they transparently cache the bindings received from @var{local} and
 @var{imported}.  Thus, the first time the program looks up a symbol in
 @var{eval}, @var{eval} may make calls to @var{local} or @var{imported}
 to find their bindings, but subsequent references to that symbol will be
@@ -1086,7 +1086,7 @@ Once this is done, we can make the following simplifications to Guile:
 
 @item
 A good portion of symbols.c can go away.  Symbols no longer need value
-slots.  The mismash of @code{scm_sym2ovcell},
+slots.  The mishmash of @code{scm_sym2ovcell},
 @code{scm_intern_obarray_soft}, etc. can go away.  @code{intern} becomes
 simpler.
 
diff --git a/doc/sources/jimb-org.texi b/doc/sources/jimb-org.texi
index 5ec4216..c4ad9ea 100644
--- a/doc/sources/jimb-org.texi
+++ b/doc/sources/jimb-org.texi
@@ -27,7 +27,7 @@ Part I: Guile Scheme
     Keywords
     Exceptions
     Modules
-	--- the preceeding three come first, because we need them
+	--- the preceding three come first, because we need them
 	    in order to explain the behavior of some things later
     Exception Handling
         --- mention that repls usually establish default exception handlers
diff --git a/doc/sources/scheme-concepts.texi b/doc/sources/scheme-concepts.texi
index e8e78f1..0e9ae6c 100644
--- a/doc/sources/scheme-concepts.texi
+++ b/doc/sources/scheme-concepts.texi
@@ -204,7 +204,7 @@ arrays, uniform arrays, bit vectors:
 @deffn procedure array-prototype ra
 @end deffn
 
-Unform arrays can be written and read, but @code{read} won't recognize
+Uniform arrays can be written and read, but @code{read} won't recognize
 them unless the optional @code{read-sharp} parameter is supplied,
 e.g, 
 @smalllisp
diff --git a/doc/sources/unix.texi b/doc/sources/unix.texi
index 0ef894a..6754f8a 100644
--- a/doc/sources/unix.texi
+++ b/doc/sources/unix.texi
@@ -28,7 +28,7 @@ be required to make them available.
 The low-level interfaces are designed to give Scheme programs
 access to as much functionality as possible from the underlying
 Unix system.  They can be used to implement higher level
-intefaces such as the Scheme shell @ref{scsh}.
+interfaces such as the Scheme shell @ref{scsh}.
 
 Generally there is a single procedure for each corresponding Unix
 facility.  However some of the procedures are implemented for
@@ -53,7 +53,7 @@ facility.
 Underscores in Unix names are converted to hyphens.
 @item
 Procedures which destructively modify Scheme data gain postpended
-exclaimation marks, e.g., @code{recv!}.
+exclamation marks, e.g., @code{recv!}.
 @item
 Predicates are postpended with question marks, e.g., @code{access?}.
 @item
diff --git a/module/ice-9/optargs.scm b/module/ice-9/optargs.scm
index 4e3267d..50a8299 100644
--- a/module/ice-9/optargs.scm
+++ b/module/ice-9/optargs.scm
@@ -269,7 +269,7 @@
 ;; take lambda*-style extended paramter lists, where #:optional,
 ;; #:key, #:allow-other-keys and #:rest are allowed with the usual
 ;; semantics. Here is an example of a macro with an optional argument:
-;;   (defmacro* transmorgify (a #:optional b)
+;;   (defmacro* transmogrify (a #:optional b)
 
 (define-syntax defmacro*
   (lambda (x)
-- 
1.7.4.rc1.6.gb704ef.dirty


[-- Attachment #4: 0003-fix-typos-in-the-manual-bits-generated-from-source-c.patch --]
[-- Type: text/plain, Size: 14025 bytes --]

From c837632602604496f82bb3e369a21dcde50269aa Mon Sep 17 00:00:00 2001
From: Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
Date: Mon, 7 Feb 2011 00:29:51 +0100
Subject: [PATCH 3/5] fix typos in the manual bits generated from source comments.

* libguile/bitvectors.c, libguile/chars.c,
libguile/deprecated.c, libguile/numbers.c, libguile/random.c,
libguile/read.c, libguile/root.c, libguile/srfi-1.c,
libguile/srfi-13.c, libguile/srfi-14.c, libguile/uniform.c:
Fix typos, add missing newlines.
---
 libguile/bitvectors.c |    2 +-
 libguile/chars.c      |    2 +-
 libguile/deprecated.c |    2 +-
 libguile/numbers.c    |    2 +-
 libguile/random.c     |    2 +-
 libguile/read.c       |    2 +-
 libguile/root.c       |    6 +++---
 libguile/srfi-1.c     |    4 ++--
 libguile/srfi-13.c    |   24 ++++++++++++------------
 libguile/srfi-14.c    |    4 ++--
 libguile/uniform.c    |    4 ++--
 11 files changed, 27 insertions(+), 27 deletions(-)

diff --git a/libguile/bitvectors.c b/libguile/bitvectors.c
index 65fc021..17b0260 100644
--- a/libguile/bitvectors.c
+++ b/libguile/bitvectors.c
@@ -496,7 +496,7 @@ find_first_one (scm_t_uint32 x)
 
 SCM_DEFINE (scm_bit_position, "bit-position", 3, 0, 0,
            (SCM item, SCM v, SCM k),
-	    "Return the index of the first occurrance of @var{item} in bit\n"
+	    "Return the index of the first occurrence of @var{item} in bit\n"
 	    "vector @var{v}, starting from @var{k}.  If there is no\n"
 	    "@var{item} entry between @var{k} and the end of\n"
 	    "@var{bitvector}, then return @code{#f}.  For example,\n"
diff --git a/libguile/chars.c b/libguile/chars.c
index fcc43f3..2e16105 100644
--- a/libguile/chars.c
+++ b/libguile/chars.c
@@ -265,7 +265,7 @@ SCM scm_char_ci_less_p (SCM x, SCM y)
 static SCM scm_i_char_ci_leq_p (SCM x, SCM y, SCM rest);
 SCM_DEFINE (scm_i_char_ci_leq_p, "char-ci<=?", 0, 2, 1,
             (SCM x, SCM y, SCM rest),
-            "Return @code{#t} iff the case-folded Unicodd code point of @var{x} is\n"
+            "Return @code{#t} iff the case-folded Unicode code point of @var{x} is\n"
             "less than or equal to the case-folded code point of @var{y}, else\n"
             "@code{#f}")
 #define FUNC_NAME s_scm_i_char_ci_leq_p
diff --git a/libguile/deprecated.c b/libguile/deprecated.c
index e11d353..59ff341 100644
--- a/libguile/deprecated.c
+++ b/libguile/deprecated.c
@@ -1341,7 +1341,7 @@ SCM_DEFINE (scm_uniform_vector_read_x, "uniform-vector-read!", 1, 3, 0,
 	    "leaving the remainder of the vector unchanged.\n\n"
 	    "When @var{port-or-fdes} is a port, all specified elements\n"
 	    "of @var{uvec} are attempted to be read, potentially blocking\n"
-	    "while waiting formore input or end-of-file.\n"
+	    "while waiting for more input or end-of-file.\n"
 	    "When @var{port-or-fd} is an integer, a single call to\n"
 	    "read(2) is made.\n\n"
 	    "An error is signalled when the last element has only\n"
diff --git a/libguile/numbers.c b/libguile/numbers.c
index 85ca0fd..bd9870f 100644
--- a/libguile/numbers.c
+++ b/libguile/numbers.c
@@ -7954,7 +7954,7 @@ SCM_PRIMITIVE_GENERIC (scm_exp, "exp", 1, 0, 0,
 SCM_PRIMITIVE_GENERIC (scm_sqrt, "sqrt", 1, 0, 0,
 		       (SCM z),
 	"Return the square root of @var{z}.  Of the two possible roots\n"
-	"(positive and negative), the one with the a positive real part\n"
+	"(positive and negative), the one with positive real part\n"
 	"is returned, or if that's zero then a positive imaginary part.\n"
 	"Thus,\n"
 	"\n"
diff --git a/libguile/random.c b/libguile/random.c
index f487eb8..8bc0d87 100644
--- a/libguile/random.c
+++ b/libguile/random.c
@@ -447,7 +447,7 @@ SCM_DEFINE (scm_seed_to_random_state, "seed->random-state", 1, 0, 0,
 SCM_DEFINE (scm_datum_to_random_state, "datum->random-state", 1, 0, 0, 
             (SCM datum),
             "Return a new random state using @var{datum}, which should have\n"
-            "been obtailed from @code{random-state->datum}.")
+            "been obtained from @code{random-state->datum}.")
 #define FUNC_NAME s_scm_datum_to_random_state
 {
   return make_rstate (scm_c_rstate_from_datum (datum));
diff --git a/libguile/read.c b/libguile/read.c
index 87eecfe..28a738e 100644
--- a/libguile/read.c
+++ b/libguile/read.c
@@ -1750,7 +1750,7 @@ scm_i_scan_for_encoding (SCM port)
 SCM_DEFINE (scm_file_encoding, "file-encoding", 1, 0, 0,
             (SCM port),
             "Scans the port for an Emacs-like character coding declaration\n"
-            "near the top of the contents of a port with random-acessible contents.\n"
+            "near the top of the contents of a port with random-accessible contents.\n"
             "The coding declaration is of the form\n"
             "@code{coding: XXXXX} and must appear in a scheme comment.\n"
             "\n"
diff --git a/libguile/root.c b/libguile/root.c
index d35d8e8..8c8fd1a 100644
--- a/libguile/root.c
+++ b/libguile/root.c
@@ -155,9 +155,9 @@ cwdr (SCM proc, SCM a1, SCM args, SCM handler, SCM_STACKITEM *stack_start)
 
 SCM_DEFINE (scm_call_with_dynamic_root, "call-with-dynamic-root", 2, 0, 0,
            (SCM thunk, SCM handler),
-	    "Call @var{thunk} with a new dynamic state and within"
-	    "a continuation barrier.  The @var{handler} catches all"
-	    "otherwise uncaught throws and executes within the same"
+	    "Call @var{thunk} with a new dynamic state and within\n"
+	    "a continuation barrier.  The @var{handler} catches all\n"
+	    "otherwise uncaught throws and executes within the same\n"
 	    "dynamic context as @var{thunk}.")
 #define FUNC_NAME s_scm_call_with_dynamic_root
 {
diff --git a/libguile/srfi-1.c b/libguile/srfi-1.c
index 7931138..5c07504 100644
--- a/libguile/srfi-1.c
+++ b/libguile/srfi-1.c
@@ -1026,7 +1026,7 @@ SCM_DEFINE (scm_srfi1_assoc, "assoc", 2, 1, 0,
 SCM_DEFINE (scm_srfi1_partition, "partition", 2, 0, 0,
 	    (SCM pred, SCM list),
 	    "Partition the elements of @var{list} with predicate @var{pred}.\n"
-	    "Return two values: the list of elements satifying @var{pred} and\n"
+	    "Return two values: the list of elements satisfying @var{pred} and\n"
 	    "the list of elements @emph{not} satisfying @var{pred}.  The order\n"
 	    "of the output lists follows the order of @var{list}.  @var{list}\n"
 	    "is not mutated.  One of the output lists may share memory with @var{list}.\n")
@@ -1185,7 +1185,7 @@ SCM_DEFINE (scm_srfi1_remove_x, "remove!", 2, 0, 0,
 
 SCM_DEFINE (scm_srfi1_take_right, "take-right", 2, 0, 0,
             (SCM lst, SCM n),
-	    "Return the a list containing the @var{n} last elements of\n"
+	    "Return a list containing the @var{n} last elements of\n"
 	    "@var{lst}.")
 #define FUNC_NAME s_scm_srfi1_take_right
 {
diff --git a/libguile/srfi-13.c b/libguile/srfi-13.c
index 9efe275..ab933c2 100644
--- a/libguile/srfi-13.c
+++ b/libguile/srfi-13.c
@@ -1640,14 +1640,14 @@ SCM_DEFINE (scm_string_suffix_ci_p, "string-suffix-ci?", 2, 4, 0,
 SCM_DEFINE (scm_string_index, "string-index", 2, 2, 0,
 	    (SCM s, SCM char_pred, SCM start, SCM end),
 	    "Search through the string @var{s} from left to right, returning\n"
-	    "the index of the first occurence of a character which\n"
+	    "the index of the first occurrence of a character which\n"
 	    "\n"
 	    "@itemize @bullet\n"
 	    "@item\n"
 	    "equals @var{char_pred}, if it is character,\n"
 	    "\n"
 	    "@item\n"
-	    "satisifies the predicate @var{char_pred}, if it is a procedure,\n"
+	    "satisfies the predicate @var{char_pred}, if it is a procedure,\n"
 	    "\n"
 	    "@item\n"
 	    "is in the set @var{char_pred}, if it is a character set.\n"
@@ -1705,14 +1705,14 @@ SCM_DEFINE (scm_string_index, "string-index", 2, 2, 0,
 SCM_DEFINE (scm_string_index_right, "string-index-right", 2, 2, 0,
 	    (SCM s, SCM char_pred, SCM start, SCM end),
 	    "Search through the string @var{s} from right to left, returning\n"
-	    "the index of the last occurence of a character which\n"
+	    "the index of the last occurrence of a character which\n"
 	    "\n"
 	    "@itemize @bullet\n"
 	    "@item\n"
 	    "equals @var{char_pred}, if it is character,\n"
 	    "\n"
 	    "@item\n"
-	    "satisifies the predicate @var{char_pred}, if it is a procedure,\n"
+	    "satisfies the predicate @var{char_pred}, if it is a procedure,\n"
 	    "\n"
 	    "@item\n"
 	    "is in the set if @var{char_pred} is a character set.\n"
@@ -1770,14 +1770,14 @@ SCM_DEFINE (scm_string_index_right, "string-index-right", 2, 2, 0,
 SCM_DEFINE (scm_string_rindex, "string-rindex", 2, 2, 0,
 	    (SCM s, SCM char_pred, SCM start, SCM end),
 	    "Search through the string @var{s} from right to left, returning\n"
-	    "the index of the last occurence of a character which\n"
+	    "the index of the last occurrence of a character which\n"
 	    "\n"
 	    "@itemize @bullet\n"
 	    "@item\n"
 	    "equals @var{char_pred}, if it is character,\n"
 	    "\n"
 	    "@item\n"
-	    "satisifies the predicate @var{char_pred}, if it is a procedure,\n"
+	    "satisfies the predicate @var{char_pred}, if it is a procedure,\n"
 	    "\n"
 	    "@item\n"
 	    "is in the set if @var{char_pred} is a character set.\n"
@@ -1792,14 +1792,14 @@ SCM_DEFINE (scm_string_rindex, "string-rindex", 2, 2, 0,
 SCM_DEFINE (scm_string_skip, "string-skip", 2, 2, 0,
 	    (SCM s, SCM char_pred, SCM start, SCM end),
 	    "Search through the string @var{s} from left to right, returning\n"
-	    "the index of the first occurence of a character which\n"
+	    "the index of the first occurrence of a character which\n"
 	    "\n"
 	    "@itemize @bullet\n"
 	    "@item\n"
 	    "does not equal @var{char_pred}, if it is character,\n"
 	    "\n"
 	    "@item\n"
-	    "does not satisify the predicate @var{char_pred}, if it is a\n"
+	    "does not satisfy the predicate @var{char_pred}, if it is a\n"
 	    "procedure,\n"
 	    "\n"
 	    "@item\n"
@@ -1858,7 +1858,7 @@ SCM_DEFINE (scm_string_skip, "string-skip", 2, 2, 0,
 SCM_DEFINE (scm_string_skip_right, "string-skip-right", 2, 2, 0,
 	    (SCM s, SCM char_pred, SCM start, SCM end),
 	    "Search through the string @var{s} from right to left, returning\n"
-	    "the index of the last occurence of a character which\n"
+	    "the index of the last occurrence of a character which\n"
 	    "\n"
 	    "@itemize @bullet\n"
 	    "@item\n"
@@ -1932,7 +1932,7 @@ SCM_DEFINE (scm_string_count, "string-count", 2, 2, 0,
 	    "equals @var{char_pred}, if it is character,\n"
 	    "\n"
 	    "@item\n"
-	    "satisifies the predicate @var{char_pred}, if it is a procedure.\n"
+	    "satisfies the predicate @var{char_pred}, if it is a procedure.\n"
 	    "\n"
 	    "@item\n"
 	    "is in the set @var{char_pred}, if it is a character set.\n"
@@ -2459,7 +2459,7 @@ SCM_DEFINE (scm_string_concatenate_shared, "string-concatenate/shared", 1, 0, 0,
 SCM_DEFINE (scm_string_concatenate_reverse_shared, "string-concatenate-reverse/shared", 1, 2, 0,
             (SCM ls, SCM final_string, SCM end),
 	    "Like @code{string-concatenate-reverse}, but the result may\n"
-	    "share memory with the the strings in the @var{ls} arguments.")
+	    "share memory with the strings in the @var{ls} arguments.")
 #define FUNC_NAME s_scm_string_concatenate_reverse_shared
 {
   /* Just call the non-sharing version.  */
@@ -2969,7 +2969,7 @@ SCM_DEFINE (scm_string_tokenize, "string-tokenize", 1, 3, 0,
 
 SCM_DEFINE (scm_string_split, "string-split", 2, 0, 0,
 	    (SCM str, SCM chr),
-	    "Split the string @var{str} into the a list of the substrings delimited\n"
+	    "Split the string @var{str} into a list of the substrings delimited\n"
 	    "by appearances of the character @var{chr}.  Note that an empty substring\n"
 	    "between separator characters will result in an empty string in the\n"
 	    "result list.\n"
diff --git a/libguile/srfi-14.c b/libguile/srfi-14.c
index af106ed..b22471d 100644
--- a/libguile/srfi-14.c
+++ b/libguile/srfi-14.c
@@ -1363,7 +1363,7 @@ SCM_DEFINE (scm_ucs_range_to_char_set, "ucs-range->char-set", 2, 2, 0,
 	    "If @var{error} is a true value, an error is signalled if the\n"
 	    "specified range contains characters which are not valid\n"
 	    "Unicode code points.  If @var{error} is @code{#f},\n"
-	    "these characters are silently left out of the resultung\n"
+	    "these characters are silently left out of the resulting\n"
 	    "character set.\n"
 	    "\n"
 	    "The characters in @var{base_cs} are added to the result, if\n"
@@ -1385,7 +1385,7 @@ SCM_DEFINE (scm_ucs_range_to_char_set_x, "ucs-range->char-set!", 4, 0, 0,
 	    "If @var{error} is a true value, an error is signalled if the\n"
 	    "specified range contains characters which are not contained in\n"
 	    "the implemented character range.  If @var{error} is @code{#f},\n"
-	    "these characters are silently left out of the resultung\n"
+	    "these characters are silently left out of the resulting\n"
 	    "character set.\n"
 	    "\n"
 	    "The characters are added to @var{base_cs} and @var{base_cs} is\n"
diff --git a/libguile/uniform.c b/libguile/uniform.c
index cab976e..d3ecb1b 100644
--- a/libguile/uniform.c
+++ b/libguile/uniform.c
@@ -160,7 +160,7 @@ scm_c_uniform_vector_ref (SCM v, size_t idx)
 SCM_DEFINE (scm_uniform_vector_ref, "uniform-vector-ref", 2, 0, 0,
 	    (SCM v, SCM idx),
 	    "Return the element at index @var{idx} of the\n"
-	    "homogenous numeric vector @var{v}.")
+	    "homogeneous numeric vector @var{v}.")
 #define FUNC_NAME s_scm_uniform_vector_ref
 {
   return scm_c_uniform_vector_ref (v, scm_to_size_t (idx));
@@ -178,7 +178,7 @@ scm_c_uniform_vector_set_x (SCM v, size_t idx, SCM val)
 SCM_DEFINE (scm_uniform_vector_set_x, "uniform-vector-set!", 3, 0, 0,
 	    (SCM v, SCM idx, SCM val),
 	    "Set the element at index @var{idx} of the\n"
-	    "homogenous numeric vector @var{v} to @var{val}.")
+	    "homogeneous numeric vector @var{v} to @var{val}.")
 #define FUNC_NAME s_scm_uniform_vector_set_x
 {
   scm_c_uniform_vector_set_x (v, scm_to_size_t (idx), val);
-- 
1.7.4.rc1.6.gb704ef.dirty


[-- Attachment #5: 0004-docs-fix-markup-in-api-options.texi.patch --]
[-- Type: text/plain, Size: 1967 bytes --]

From ae67f30cb1ff9354c240c09a62e4bcdebab82d8e Mon Sep 17 00:00:00 2001
From: Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
Date: Tue, 8 Feb 2011 20:52:02 +0100
Subject: [PATCH 4/5] docs: fix markup in api-options.texi.

* doc/ref/api-options.texi (Build Config): Use @var for
metasyntactic variable.  Add newline after @noindent.
Use @env for GUILE_LOAD_PATH.
---
 doc/ref/api-options.texi |   11 ++++++-----
 1 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/doc/ref/api-options.texi b/doc/ref/api-options.texi
index 1102708..57ba02e 100644
--- a/doc/ref/api-options.texi
+++ b/doc/ref/api-options.texi
@@ -82,10 +82,11 @@ general are stored.  On Unix-like systems, this is usually
 Return the name of the directory where the Guile Scheme files that
 belong to the core Guile installation (as opposed to files from a 3rd
 party package) are installed.  On Unix-like systems this is usually
-@file{/usr/local/share/guile/<GUILE_EFFECTIVE_VERSION>} or
-@file{/usr/share/guile/<GUILE_EFFECTIVE_VERSION>};
+@file{/usr/local/share/guile/@var{GUILE_EFFECTIVE_VERSION}} or
+@file{/usr/share/guile/@var{GUILE_EFFECTIVE_VERSION}};
 
-@noindent for example @file{/usr/local/share/guile/1.6}.
+@noindent
+for example @file{/usr/local/share/guile/1.6}.
 @end deffn
 
 @deffn {Scheme Procedure} %site-dir
@@ -95,12 +96,12 @@ your site should be installed.  On Unix-like systems, this is usually
 @file{/usr/local/share/guile/site} or @file{/usr/share/guile/site}.
 @end deffn
 
-@cindex GUILE_LOAD_PATH
+@cindex @env{GUILE_LOAD_PATH}
 @defvar %load-path
 List of directories which should be searched for Scheme modules and
 libraries.  @code{%load-path} is initialized when Guile starts up to
 @code{(list (%site-dir) (%library-dir) (%package-data-dir))},
-prepended with the contents of the GUILE_LOAD_PATH environment variable,
+prepended with the contents of the @env{GUILE_LOAD_PATH} environment variable,
 if it is set.
 @end defvar
 
-- 
1.7.4.rc1.6.gb704ef.dirty


[-- Attachment #6: 0005-docs-add-missing-parentheses-in-asin-formula.patch --]
[-- Type: text/plain, Size: 803 bytes --]

From 6a07f96e3953c169c5407c6cf289f1599364a991 Mon Sep 17 00:00:00 2001
From: Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
Date: Tue, 8 Feb 2011 21:13:07 +0100
Subject: [PATCH 5/5] docs: add missing parentheses in asin formula.

* doc/r5rs/r5rs.texi (Numerical operations): Add parentheses
around argument to sqrt.
---
 doc/r5rs/r5rs.texi |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/doc/r5rs/r5rs.texi b/doc/r5rs/r5rs.texi
index 1c3df60..b7722c1 100644
--- a/doc/r5rs/r5rs.texi
+++ b/doc/r5rs/r5rs.texi
@@ -4446,7 +4446,7 @@ With log defined this way, the values of sin^-1 z, cos^-1 z,
 and tan^-1 z are according to the following formulae:
 
 
-@center sin^-1 z = -i log (i z + sqrt1 - z^2)
+@center sin^-1 z = -i log (i z + sqrt(1 - z^2))
 
 
 
-- 
1.7.4.rc1.6.gb704ef.dirty


^ permalink raw reply related	[flat|nested] 29+ messages in thread

* Re: Typos in the manual
  2011-02-08 20:25 Typos in the manual Ralf Wildenhues
@ 2011-02-13  0:49 ` Neil Jerram
  2011-02-13  7:00   ` Ralf Wildenhues
  2011-02-15 20:48   ` Mark Harig
  0 siblings, 2 replies; 29+ messages in thread
From: Neil Jerram @ 2011-02-13  0:49 UTC (permalink / raw)
  To: Ralf Wildenhues; +Cc: bug-guile

Ralf Wildenhues <Ralf.Wildenhues@gmx.de> writes:

> Hello Guile developers,
>
> I found a few typos in the manual, actually, comparatively very few for
> the size of the manual!  The attached patches should fix them.  Please
> be scrupulous, I'm not firm in Guile language details nor habits.

I applied all these except for the following that I wasn't sure about.

> diff --git a/doc/ref/api-options.texi b/doc/ref/api-options.texi
> index 7121784..57ba02e 100644
> --- a/doc/ref/api-options.texi
> +++ b/doc/ref/api-options.texi
> @@ -82,10 +82,11 @@ general are stored.  On Unix-like systems, this is usually
>  Return the name of the directory where the Guile Scheme files that
>  belong to the core Guile installation (as opposed to files from a 3rd
>  party package) are installed.  On Unix-like systems this is usually
> -@file{/usr/local/share/guile/<GUILE_EFFECTIVE_VERSION>} or
> -@file{/usr/share/guile/<GUILE_EFFECTIVE_VERSION>};
> +@file{/usr/local/share/guile/@var{GUILE_EFFECTIVE_VERSION}} or
> +@file{/usr/share/guile/@var{GUILE_EFFECTIVE_VERSION}};
>  
> -@noindent for example @file{/usr/local/share/guile/1.6}.
> +@noindent
> +for example @file{/usr/local/share/guile/1.6}.
>  @end deffn
>  
>  @deffn {Scheme Procedure} %site-dir

Will @var always generate appropriate markup for making it clear that
GUILE_EFFECTIVE_VERSION isn't meant literally?  I think that is what the
< and > intend to indicate.

> diff --git a/doc/ref/api-compound.texi b/doc/ref/api-compound.texi
> index 2284b0d..e108da8 100644
> --- a/doc/ref/api-compound.texi
> +++ b/doc/ref/api-compound.texi
> @@ -1820,7 +1820,7 @@ have smaller rank than @var{array}.
>  @subsubsection Accessing Arrays from C
>  
>  Arrays, especially uniform numeric arrays, are useful to efficiently
> -represent large amounts of rectangularily organized information, such as
> +represent large amounts of information organized in a rectangular way, such as
>  matrices, images, or generally blobs of binary data.  It is desirable to
>  access these blobs in a C like manner so that they can be handed to
>  external C code such as linear algebra libraries or image processing

I'm afraid "organized in a rectangular way" is just as opaque to me as
"rectangularily organized", so this isn't a clear improvement.

I think readers will already know what array data is, so perhaps we can
just delete that first sentence, and refactor the rest of the para to:

"
For interworking with external C code, Guile provides an API to allow C
code to access the elements of a Scheme array.  In particular, for
uniform numeric arrays, the API exposes the underlying uniform data as a
C array of numbers of the relevant type.
"

Any other suggestions?

> diff --git a/doc/ref/api-data.texi b/doc/ref/api-data.texi
> index fd2e7ee..59b6405 100644
> --- a/doc/ref/api-data.texi
> +++ b/doc/ref/api-data.texi
> @@ -225,8 +225,8 @@ rational is also real, and every real number is also a complex number
>  In addition to the classification into integers, rationals, reals and
>  complex numbers, Scheme also distinguishes between whether a number is
>  represented exactly or not.  For example, the result of
> -@m{2\sin(\pi/4),2*sin(pi/4)} is exactly @m{\sqrt{2},2^(1/2)}, but Guile
> -can represent neither @m{\pi/4,pi/4} nor @m{\sqrt{2},2^(1/2)} exactly.
> +@m{2\sin(\pi/4),2*sin(pi/4)} is exactly @m{\sqrt2,2^(1/2)}, but Guile
> +can represent neither @m{\pi/4,pi/4} nor @m{\sqrt2,2^(1/2)} exactly.
>  Instead, it stores an inexact approximation, using the C type
>  @code{double}.

Why is \sqrt2 better than \sqrt{2} ?

> @@ -572,7 +572,7 @@ is an integer number or a rational number.
>  @deffnx {C Function} scm_rational_p (x)
>  Return @code{#t} if @var{x} is a rational number, @code{#f} otherwise.
>  Note that the set of integer values forms a subset of the set of
> -rational numbers, i. e. the predicate will also be fulfilled if
> +rational numbers, i.e.@: the predicate will also be fulfilled if
>  @var{x} is an integer number.
>  @end deffn

Having read through your comments below, I understand this one, and will
apply it.

> @@ -4550,7 +4550,7 @@ representing the contents of @var{bv}, decoded according to
>  @deffnx {Scheme Procedure} sint-list->bytevector lst endianness size
>  @deffnx {C Function} scm_uint_list_to_bytevector (lst, endianness, size)
>  @deffnx {C Function} scm_sint_list_to_bytevector (lst, endianness, size)
> -Return a new bytevector containing the unsigned (resp. signed) integers
> +Return a new bytevector containing the unsigned (resp.@: signed) integers
>  listed in @var{lst} and encoded on @var{size} bytes according to
>  @var{endianness}.
>  @end deffn

I don't think "resp." is reliably understood.  I propose instead to
separate each of the current 3 uses of "resp. signed" into separate
signed and unsigned @deffns.

> diff --git a/doc/ref/compiler.texi b/doc/ref/compiler.texi
> index 8274a96..3c35cc8 100644
> --- a/doc/ref/compiler.texi
> +++ b/doc/ref/compiler.texi
> @@ -855,7 +855,7 @@ for more information about the Brainfuck language itself.
>  At this point, we break with the impersonal tone of the rest of the
>  manual, and make an intervention. Admit it: if you've read this far
>  into the compiler internals manual, you are a junkie. Perhaps a course
> -at your university left you unsated, or perhaps you've always harbored
> +at your university left you unsatisfied, or perhaps you've always harbored
>  a sublimated desire to hack the holy of computer science holies: a
>  compiler. Well you're in good company, and in a good position. Guile's
>  compiler needs your help.

"unsated" is fine in English too, and I hesitate to tinker with Andy's
fine prose.  So I'd prefer to leave this as is.

> There are a few things that I spotted that I didn't fix, either because
> I didn't know which was the right way, or in cases that I've come to
> know as contentious among developers.  It would be nice if you could go
> over them and address them in one way or another.  Given consensus, I
> might be prodded into patching some, but don't count on me.
>
> - Word pairs you might want to review and/or maybe just use one set of:
>     queuing vs. queueing,

queuing.  Listed by merriam-webster.com before "queueing", wins 2:1 in a
googlefight, and is simpler.

>     destructur.* vs. destruct.* vs. deconstr.*
>     (unless they have different meanings of course),

In general, I believe these are all validly different.  I believe the
use of "deconstructor" is idiomatic here (which is the only occurrence):

"
apply @code{force} to arguments of deconstructors (e.g., @code{car},
@code{cdr} and @code{null?}),
"

Similarly for the use of "destructuring" when talking about syntax.

An easily imaginable mistake would be "destruct" (wrong) rather than
"destroy" (right), but there aren't actually any instances of this.

>     uninterned vs. non-internal,

"uninterned" is certainly idiomatic in the Lisp world.  Where do you see
"non-internal"?

>     latin1 vs. latin-1,

I'm happy to defer to you on that.  What do you recommend?

>     parsable vs. parseable.

parsable.  "parseable" is a clear mistake, I'd say.

> - 'postpend': I'd replace this with 'append' throughout the tree
>   (not just the manual).

I'm not seeing this....  (Have I missed some other discussion or patches
in this area?)

> - Some abbreviations are spelt creatively.  The Latin 'id est' is
>   usually abbreviated 'i.e.' without an intervening space, and for good
>   spacing you either need a comma right afterwards, or '@:'.  Same with
>   'e.g.'.  Find lots of instances with:
>     git grep '\<[Ii][. ]*e\.[^,@]'
>
>   My personal preference is to use a comma when what follows is long or
>   grammatically a full sentence, and '@:' otherwise.  (info texinfo "Not
>   Ending a Sentence").

Agreed.

> - The Guile manual seems quite eager in making up new words.  This is to
>   some extent a tendency that just comes with hacking, and has both
>   distinguished and entertaining aspects.  At the same time however, it
>   can make things less accessible for new users, especially those with a
>   foreign native language, who then have troubles looking such words up
>   in some dictionary.  It starts with very simple things like 'dir' and
>   'arg' which I assume nobody has a serious problem with, yet which I
>   would always write as 'directory' and 'argument' in prose
>   (cf. 'info standards "GNU Manuals"'; but this goes beyond that
>   text).

Agreed - patches appreciated.

>   OTOH, things like 'unpermanent', 'cdring', and 'consing' are not easy
>   to understand IMVHO.

I'd say "consing" is a close call.  On the one hand it's certainly
idiomatic in Lisp/Scheme.  On the other hand, a newbie would not know
it.  Perhaps the term just needs to be clearly explained in the section
that describes lists, and maybe some references added from the other
uses?

The others are definitely unhelpful, and I'd be happy to accept a patch to
fix them.

>
> - In the Autoconf section, several macros are added to the function
>   index.  They come from doc/ref/autoconf{,-macros}.texi (one being
>   generated from meta/guile.m4.  The macros are:
>     PKG_CHECK_MODULES
>     GUILE_PROGS
>     GUILE_FLAGS
>     GUILE_SITE_DIR
>     GUILE_CHECK_RETVAL
>     GUILE_MODULE_CHECK
>     GUILE_MODULE_AVAILABLE
>     GUILE_MODULE_REQUIRED
>     GUILE_MODULE_EXPORTS
>     GUILE_MODULE_REQUIRED_EXPORT
>
>   The simplest way to fix this

Fix what?

> would be to adjust indices.texi to
>   document that Autoconf macros and variables are also listed in this
>   index.  Karl tells me that one should have less indices anyway for the
>   autotools manuals (ideally just one), so this would seem like a step
>   in the right direction.

Sorry, I'm not following here at all.

> - I love France and the Franc, but there will soon be kids that don't
>   remember it, for which 'french currency string' will be a foreign
>   concept.  It might be a good idea to update the example eventually.

Indeed, yes.

> Thanks for maintaining Guile,
> Ralf

Thanks for your detailed review and patches!

         Neil



^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: Typos in the manual
  2011-02-13  0:49 ` Neil Jerram
@ 2011-02-13  7:00   ` Ralf Wildenhues
  2011-02-13 22:29     ` Neil Jerram
  2011-02-15 15:48     ` Marijn
  2011-02-15 20:48   ` Mark Harig
  1 sibling, 2 replies; 29+ messages in thread
From: Ralf Wildenhues @ 2011-02-13  7:00 UTC (permalink / raw)
  To: Neil Jerram; +Cc: bug-guile

Hi Neil,

* Neil Jerram wrote on Sun, Feb 13, 2011 at 01:49:43AM CET:
> Ralf Wildenhues writes:
> > I found a few typos in the manual, actually, comparatively very few for
> > the size of the manual!  The attached patches should fix them.  Please
> > be scrupulous, I'm not firm in Guile language details nor habits.
> 
> I applied all these except for the following that I wasn't sure about.

Thank you!

Not quoting stuff I completely agree with:

> > --- a/doc/ref/api-options.texi
> > +++ b/doc/ref/api-options.texi
> > @@ -82,10 +82,11 @@ general are stored.  On Unix-like systems, this is usually
> >  Return the name of the directory where the Guile Scheme files that
> >  belong to the core Guile installation (as opposed to files from a 3rd
> >  party package) are installed.  On Unix-like systems this is usually
> > -@file{/usr/local/share/guile/<GUILE_EFFECTIVE_VERSION>} or
> > -@file{/usr/share/guile/<GUILE_EFFECTIVE_VERSION>};
> > +@file{/usr/local/share/guile/@var{GUILE_EFFECTIVE_VERSION}} or
> > +@file{/usr/share/guile/@var{GUILE_EFFECTIVE_VERSION}};
> >  
> > -@noindent for example @file{/usr/local/share/guile/1.6}.
> > +@noindent
> > +for example @file{/usr/local/share/guile/1.6}.
> >  @end deffn
> >  
> >  @deffn {Scheme Procedure} %site-dir
> 
> Will @var always generate appropriate markup for making it clear that
> GUILE_EFFECTIVE_VERSION isn't meant literally?  I think that is what the
> < and > intend to indicate.

Well, @var is the intended way to denote metasyntactic variables.
In info output, it capitalizes, in PDF output it uses a different font
(or small caps IIRC).  See 'info texinfo var'.  It might sometimes be
a bit hard to always read them correctly in info output.  I'm not sure
how info could be improved though.

If you choose to drop this hunk (which is fine of course), please still
add a newline after the @noindent.

> > --- a/doc/ref/api-compound.texi
> > +++ b/doc/ref/api-compound.texi
> > @@ -1820,7 +1820,7 @@ have smaller rank than @var{array}.
> >  @subsubsection Accessing Arrays from C
> >  
> >  Arrays, especially uniform numeric arrays, are useful to efficiently
> > -represent large amounts of rectangularily organized information, such as
> > +represent large amounts of information organized in a rectangular way, such as
> >  matrices, images, or generally blobs of binary data.  It is desirable to
> >  access these blobs in a C like manner so that they can be handed to
> >  external C code such as linear algebra libraries or image processing
> 
> I'm afraid "organized in a rectangular way" is just as opaque to me as
> "rectangularily organized", so this isn't a clear improvement.
> 
> I think readers will already know what array data is, so perhaps we can
> just delete that first sentence, and refactor the rest of the para to:
> 
> "
> For interworking with external C code, Guile provides an API to allow C
> code to access the elements of a Scheme array.  In particular, for
> uniform numeric arrays, the API exposes the underlying uniform data as a
> C array of numbers of the relevant type.
> "

Sounds better to me, thanks.

> > --- a/doc/ref/api-data.texi
> > +++ b/doc/ref/api-data.texi
> > @@ -225,8 +225,8 @@ rational is also real, and every real number is also a complex number
> >  In addition to the classification into integers, rationals, reals and
> >  complex numbers, Scheme also distinguishes between whether a number is
> >  represented exactly or not.  For example, the result of
> > -@m{2\sin(\pi/4),2*sin(pi/4)} is exactly @m{\sqrt{2},2^(1/2)}, but Guile
> > -can represent neither @m{\pi/4,pi/4} nor @m{\sqrt{2},2^(1/2)} exactly.
> > +@m{2\sin(\pi/4),2*sin(pi/4)} is exactly @m{\sqrt2,2^(1/2)}, but Guile
> > +can represent neither @m{\pi/4,pi/4} nor @m{\sqrt2,2^(1/2)} exactly.
> >  Instead, it stores an inexact approximation, using the C type
> >  @code{double}.
> 
> Why is \sqrt2 better than \sqrt{2} ?

No idea, that was pure consistency at work: you already use \sqrt2
elsewhere.  Doesn't matter really.

> > @@ -4550,7 +4550,7 @@ representing the contents of @var{bv}, decoded according to
> >  @deffnx {Scheme Procedure} sint-list->bytevector lst endianness size
> >  @deffnx {C Function} scm_uint_list_to_bytevector (lst, endianness, size)
> >  @deffnx {C Function} scm_sint_list_to_bytevector (lst, endianness, size)
> > -Return a new bytevector containing the unsigned (resp. signed) integers
> > +Return a new bytevector containing the unsigned (resp.@: signed) integers
> >  listed in @var{lst} and encoded on @var{size} bytes according to
> >  @var{endianness}.
> >  @end deffn
> 
> I don't think "resp." is reliably understood.  I propose instead to
> separate each of the current 3 uses of "resp. signed" into separate
> signed and unsigned @deffns.

Sure.

> > --- a/doc/ref/compiler.texi
> > +++ b/doc/ref/compiler.texi
> > @@ -855,7 +855,7 @@ for more information about the Brainfuck language itself.
> >  At this point, we break with the impersonal tone of the rest of the
> >  manual, and make an intervention. Admit it: if you've read this far
> >  into the compiler internals manual, you are a junkie. Perhaps a course
> > -at your university left you unsated, or perhaps you've always harbored
> > +at your university left you unsatisfied, or perhaps you've always harbored
> >  a sublimated desire to hack the holy of computer science holies: a
> >  compiler. Well you're in good company, and in a good position. Guile's
> >  compiler needs your help.
> 
> "unsated" is fine in English too, and I hesitate to tinker with Andy's
> fine prose.  So I'd prefer to leave this as is.

Yeah, that one can be attributed to my not being a native speaker.

> >     uninterned vs. non-internal,
> 
> "uninterned" is certainly idiomatic in the Lisp world.  Where do you see
> "non-internal"?

Hmm, maybe that was what I thought "uninterned" would mean.

> >     latin1 vs. latin-1,
> 
> I'm happy to defer to you on that.  What do you recommend?

Never mind on this one.  Prose already uses latin-1 consistently in the
*.texi files, and I assume actual code references to Guile and Emacs
code need use the spelling that is correct there.

> >     parsable vs. parseable.
> 
> parsable.  "parseable" is a clear mistake, I'd say.

I'm not so sure, I think both are possible.

> > - 'postpend': I'd replace this with 'append' throughout the tree
> >   (not just the manual).
> 
> I'm not seeing this....  (Have I missed some other discussion or patches
> in this area?)

doc/sources/unix.texi, two instances around line 60.

> > - In the Autoconf section, several macros are added to the function
> >   index.  They come from doc/ref/autoconf{,-macros}.texi (one being
> >   generated from meta/guile.m4.  The macros are:
> >     PKG_CHECK_MODULES
> >     GUILE_PROGS
> >     GUILE_FLAGS
> >     GUILE_SITE_DIR
> >     GUILE_CHECK_RETVAL
> >     GUILE_MODULE_CHECK
> >     GUILE_MODULE_AVAILABLE
> >     GUILE_MODULE_REQUIRED
> >     GUILE_MODULE_EXPORTS
> >     GUILE_MODULE_REQUIRED_EXPORT
> >
> >   The simplest way to fix this
> 
> Fix what?
> 
> > would be to adjust indices.texi to
> >   document that Autoconf macros and variables are also listed in this
> >   index.  Karl tells me that one should have less indices anyway for the
> >   autotools manuals (ideally just one), so this would seem like a step
> >   in the right direction.
> 
> Sorry, I'm not following here at all.

Well.  If you look at the Procedure Index of the manual, you will find
entries for the above Autoconf macros in there.  The Procedure Index has
the following intro text:

  This is an alphabetical list of all the procedures and macros in Guile.

     When looking for a particular procedure, please look under its Scheme
  name as well as under its C name.  The C name can be constructed from
  the Scheme names by a simple transformation described in the section
  *Note API Overview::.

In other words, no mention of "Autoconf macros", and I wouldn't expect
to find them there, among all the Scheme and C symbols.  Now, you can
either fix the text to match the contents, or change the extractor to
not emit @deffn's for the Autoconf macro in doc/ref/autoconf-macros.texi
so that they don't end being listed in the Procedure Index.

Is that clearer now?

Thanks,
Ralf



^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: Typos in the manual
  2011-02-13  7:00   ` Ralf Wildenhues
@ 2011-02-13 22:29     ` Neil Jerram
  2011-02-15 15:48     ` Marijn
  1 sibling, 0 replies; 29+ messages in thread
From: Neil Jerram @ 2011-02-13 22:29 UTC (permalink / raw)
  To: Ralf Wildenhues; +Cc: bug-guile

Ralf Wildenhues <Ralf.Wildenhues@gmx.de> writes:

> Hi Neil,

Hi Ralf,

I pushed some more changes based on your input.  Below has just a few
specific notes.

> * Neil Jerram wrote on Sun, Feb 13, 2011 at 01:49:43AM CET:
>> 
>> Will @var always generate appropriate markup for making it clear that
>> GUILE_EFFECTIVE_VERSION isn't meant literally?  I think that is what the
>> < and > intend to indicate.
>
> Well, @var is the intended way to denote metasyntactic variables.
> In info output, it capitalizes, in PDF output it uses a different font
> (or small caps IIRC).  See 'info texinfo var'.  It might sometimes be
> a bit hard to always read them correctly in info output.  I'm not sure
> how info could be improved though.

Yes, I'm convinced now and so have applied this.

>> Why is \sqrt2 better than \sqrt{2} ?
>
> No idea, that was pure consistency at work: you already use \sqrt2
> elsewhere.  Doesn't matter really.

I went for \sqrt{2} everywhere - I think that avoids anyone (who doesn't
immediately know the fine detail of TeX's lexer) wondering whether \sqrt2
might be a special TeX token.

>> > - In the Autoconf section, several macros are added to the function
>> >   index.  They come from doc/ref/autoconf{,-macros}.texi (one being
>> >   generated from meta/guile.m4.  The macros are:
>> >     PKG_CHECK_MODULES
>> >     GUILE_PROGS
>> >     GUILE_FLAGS
>> >     GUILE_SITE_DIR
>> >     GUILE_CHECK_RETVAL
>> >     GUILE_MODULE_CHECK
>> >     GUILE_MODULE_AVAILABLE
>> >     GUILE_MODULE_REQUIRED
>> >     GUILE_MODULE_EXPORTS
>> >     GUILE_MODULE_REQUIRED_EXPORT
>> >
>> >   The simplest way to fix this
>> 
>> Fix what?
>> 
>> > would be to adjust indices.texi to
>> >   document that Autoconf macros and variables are also listed in this
>> >   index.  Karl tells me that one should have less indices anyway for the
>> >   autotools manuals (ideally just one), so this would seem like a step
>> >   in the right direction.
>> 
>> Sorry, I'm not following here at all.
>
> Well.  If you look at the Procedure Index of the manual, you will find
> entries for the above Autoconf macros in there.  The Procedure Index has
> the following intro text:
>
>   This is an alphabetical list of all the procedures and macros in Guile.
>
>      When looking for a particular procedure, please look under its Scheme
>   name as well as under its C name.  The C name can be constructed from
>   the Scheme names by a simple transformation described in the section
>   *Note API Overview::.
>
> In other words, no mention of "Autoconf macros", and I wouldn't expect
> to find them there, among all the Scheme and C symbols.  Now, you can
> either fix the text to match the contents, or change the extractor to
> not emit @deffn's for the Autoconf macro in doc/ref/autoconf-macros.texi
> so that they don't end being listed in the Procedure Index.
>
> Is that clearer now?

Yes, thanks; done as you and Karl recommend.

      Neil



^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: Typos in the manual
  2011-02-13  7:00   ` Ralf Wildenhues
  2011-02-13 22:29     ` Neil Jerram
@ 2011-02-15 15:48     ` Marijn
  2011-02-15 20:21       ` Mark Harig
  2011-02-15 23:49       ` Neil Jerram
  1 sibling, 2 replies; 29+ messages in thread
From: Marijn @ 2011-02-15 15:48 UTC (permalink / raw)
  To: Ralf Wildenhues, Neil Jerram, bug-guile

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi,

On 02/13/11 08:00, Ralf Wildenhues wrote:
> Hi Neil,
> 
> * Neil Jerram wrote on Sun, Feb 13, 2011 at 01:49:43AM CET:
>> Ralf Wildenhues writes:
>>> --- a/doc/ref/compiler.texi
>>> +++ b/doc/ref/compiler.texi
>>> @@ -855,7 +855,7 @@ for more information about the Brainfuck language itself.
>>>  At this point, we break with the impersonal tone of the rest of the
>>>  manual, and make an intervention. Admit it: if you've read this far
>>>  into the compiler internals manual, you are a junkie. Perhaps a course
>>> -at your university left you unsated, or perhaps you've always harbored
>>> +at your university left you unsatisfied, or perhaps you've always harbored
>>>  a sublimated desire to hack the holy of computer science holies: a
>>>  compiler. Well you're in good company, and in a good position. Guile's
>>>  compiler needs your help.
>>
>> "unsated" is fine in English too, and I hesitate to tinker with Andy's
>> fine prose.  So I'd prefer to leave this as is.
> 
> Yeah, that one can be attributed to my not being a native speaker.
> 

Reading the quoted text I can't help but wonder what a "sublimated
desire" is. According to wiktionary "sublimated" is the past tense of
"sublimate" which has 3 meanings[1] none of which I recognize as the
intended meaning. Perhaps "subliminal desire"[2] is meant, that is, a
desire that is so faint that it is not discernible by the conscious
mind, but that usage is said to be reserved for stimuli and one may
consider it a stretch to include a desire under stimuli. If my analysis
so far seems correct I tentatively propose "secret desire" or "furtive
desire" as corrections.

Marijn

[1]: http://en.wiktionary.org/wiki/sublimate
[2]: http://en.wiktionary.org/wiki/subliminal
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.17 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAk1aoEIACgkQp/VmCx0OL2ytqgCgwAZ9tGhFeHzkW5uUC4bk09B4
CgwAn2EeWhtQGzM95cXB8JRaMweByBHF
=ca+s
-----END PGP SIGNATURE-----



^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: Typos in the manual
  2011-02-15 15:48     ` Marijn
@ 2011-02-15 20:21       ` Mark Harig
  2011-02-15 23:55         ` Neil Jerram
  2011-02-15 23:49       ` Neil Jerram
  1 sibling, 1 reply; 29+ messages in thread
From: Mark Harig @ 2011-02-15 20:21 UTC (permalink / raw)
  To: bug-guile; +Cc: Ralf.Wildenhues, neil

>
> >>> --- a/doc/ref/compiler.texi
> >>> +++ b/doc/ref/compiler.texi
> >>> @@ -855,7 +855,7 @@ for more information about the Brainfuck 
language
> itself.
> >>>  At this point, we break with the impersonal tone of the rest of 
the
> >>>  manual, and make an intervention. Admit it: if you've read this 
far
> >>>  into the compiler internals manual, you are a junkie. Perhaps a 
course
> >>> -at your university left you unsated, or perhaps you've always 
harbored
> >>> +at your university left you unsatisfied, or perhaps you've 
always harbored
> >>>  a sublimated desire to hack the holy of computer science holies: 
a
> >>>  compiler. Well you're in good company, and in a good position. 
Guile's
> >>>  compiler needs your help.
> >>
> >> "unsated" is fine in English too, and I hesitate to tinker with 
Andy's
> >> fine prose.  So I'd prefer to leave this as is.
> >
> > Yeah, that one can be attributed to my not being a native speaker.
> >
>
> Reading the quoted text I can't help but wonder what a "sublimated
> desire" is. According to wiktionary "sublimated" is the past tense of
> "sublimate" which has 3 meanings[1] none of which I recognize as the
> intended meaning. Perhaps "subliminal desire"[2] is meant, that is, a
> desire that is so faint that it is not discernible by the conscious
> mind, but that usage is said to be reserved for stimuli and one may
> consider it a stretch to include a desire under stimuli. If my 
analysis
> so far seems correct I tentatively propose "secret desire" or "furtive
> desire" as corrections.
>

Likewise, "make an intervention" implies that the author intends to
intervene or stop or prevent something.  But the author is not hoping
to stop compiler junkies from continuing their habit of writing code
for compilers -- to the contrary.  Given the text that follows this
phrase, "make an interjection" is probably what was intended.
Alternatively, "make an entreaty" would describe the type of
interjection that is to follow.

--



^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: Typos in the manual
  2011-02-13  0:49 ` Neil Jerram
  2011-02-13  7:00   ` Ralf Wildenhues
@ 2011-02-15 20:48   ` Mark Harig
  2011-02-15 21:14     ` Ralf Wildenhues
  1 sibling, 1 reply; 29+ messages in thread
From: Mark Harig @ 2011-02-15 20:48 UTC (permalink / raw)
  To: bug-guile; +Cc: Ralf.Wildenhues, neil

>
> > - Some abbreviations are spelt creatively.  The Latin 'id est' is
> >   usually abbreviated 'i.e.' without an intervening space, and for 
good
> >   spacing you either need a comma right afterwards, or '@:'.  Same 
with
> >   'e.g.'.  Find lots of instances with:
> >     git grep '\<[Ii][. ]*e\.[^,@]'
> >
> >   My personal preference is to use a comma when what follows is 
long or
> >   grammatically a full sentence, and '@:' otherwise.  (info texinfo 
"Not
> >   Ending a Sentence").
>
> Agreed.

Both "i.e." and "e.g." should always be followed by a comma.  (The
previous sentence is not self-contradictory because in these
instances, the terms are quoted rather than used.)  I am not able to
think of an example where this rule should not be applied, even though
on the internet it is commonly not followed.  They should always be 
preceded
by a comma when they do not start a sentence, an interjection, or a
parenthetical phrase.  Likewise, "etc." should always be preceded by a
comma unless a sentence is constructed that starts with "etc."



^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: Typos in the manual
  2011-02-15 20:48   ` Mark Harig
@ 2011-02-15 21:14     ` Ralf Wildenhues
  2011-02-15 22:32       ` Mark Harig
  0 siblings, 1 reply; 29+ messages in thread
From: Ralf Wildenhues @ 2011-02-15 21:14 UTC (permalink / raw)
  To: Mark Harig; +Cc: bug-guile, neil

Hello Mark,

* Mark Harig wrote on Tue, Feb 15, 2011 at 09:48:24PM CET:
> Both "i.e." and "e.g." should always be followed by a comma.

Well.  Let me tell you.  I've written those kinds of patches before,
adding a comma unconditionally and all.  After a few maintainers of
some packages rejected them, I've become less enthused.

Also, while the Chicago Manual of Style recommends it, some other online
grammar sites mention that it is American English style, but British
English would not add a comma afterwards.  Yet others do not require it
even in American style.

Cheers,
Ralf (whose first style book is shipping this way right now ... :-)



^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: Typos in the manual
  2011-02-15 21:14     ` Ralf Wildenhues
@ 2011-02-15 22:32       ` Mark Harig
  2011-02-16  0:14         ` Neil Jerram
  2011-02-16 21:17         ` Ludovic Courtès
  0 siblings, 2 replies; 29+ messages in thread
From: Mark Harig @ 2011-02-15 22:32 UTC (permalink / raw)
  To: Ralf.Wildenhues; +Cc: bug-guile, neil

>
> > Both "i.e." and "e.g." should always be followed by a comma.
>
> Well.  Let me tell you.  I've written those kinds of patches before,
> adding a comma unconditionally and all.  After a few maintainers of
> some packages rejected them, I've become less enthused.
>

Something that's long been a mystery to me is why it is that computer
programmers, who spend their days learning and following the rules and
idioms of various programming languages, do not want to learn and
follow the rules and idioms of natural languages.

Reference manuals should strive to follow grammar and usage rules as
much as possible in a jargon-filled context.  There is enough room
already for confusion and lack of precision.

> Also, while the Chicago Manual of Style recommends it, some other 
online
> grammar sites mention that it is American English style, but British
> English would not add a comma afterwards.  Yet others do not require 
it
> even in American style.
>

Let's follow the guides that do require it.

To propose that the comma sometimes be included and sometimes be
omitted after "i.e." and "e.g." should be considered the same as
proposing that the comma following the words "that is" and "for
example" are optional.  The comma should not be optional because it
changes the meaning of the sentence, often making it ungrammatical.

Examples from the Guile reference manual:

Example 1:

By "simple" we mean data types that are not primarily used as
containers to hold other data -- i.e. pairs, lists, vectors and so on.

Substituting the words "that is" for "i.e." in two alternatives, which
is correct?

A)
By "simple" we mean data types that are not primarily used as
containers to hold other data -- that is pairs, lists, vectors and
so on.

B)
By "simple," we mean data types that are not primarily used as
containers to hold other data, that is, pairs, lists, vectors,
and so on.

Without the comma between "that is" and "pairs," the reader has a
noun-verb phrase that he needs to disambiguate to figure out the true
meaning.  ("that is pairs?"  "that is pairs" *what*?  What is "pairs"
doing?  Oh, you mean, "that is, pairs, lists, ...")

(Note the added comma before 'and so on' in keeping with the rule that
"etc." should always be preceded by a comma, and "etc." is an (Latin)
abbreviation for "and so on.")

Example 2:

An external representation (i.e. one which can written with `write'
and read with `read') of a random state object can be obtained via
`random-state->datum'.

Which is correct?

A)
An external representation (that is one which can written with
`write' and read with `read') of a random state object can be obtained
via `random-state->datum'.

B)
An external representation (that is, one which can written with
`write' and read with `read') of a random state object can be obtained
via `random-state->datum'.

Again, without the comma after "that is," the parenthetical phrase has
a different meaning than it does with the comma.  With the comma,
the phrase is a supplemental description of what is meant by the term
"external representation."  Without the comma, the phrase is selecting
from the supposedly many types of "external representations."

> Cheers,
> Ralf (whose first style book is shipping this way right now ... :-)

GNU Guile is lucky to have someone as knowledgeable as yourself
reviewing its manual.

--



^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: Typos in the manual
  2011-02-15 15:48     ` Marijn
  2011-02-15 20:21       ` Mark Harig
@ 2011-02-15 23:49       ` Neil Jerram
  1 sibling, 0 replies; 29+ messages in thread
From: Neil Jerram @ 2011-02-15 23:49 UTC (permalink / raw)
  To: Marijn; +Cc: bug-guile, Ralf Wildenhues

Marijn <hkBst@gentoo.org> writes:

> Reading the quoted text I can't help but wonder what a "sublimated
> desire" is. According to wiktionary "sublimated" is the past tense of
> "sublimate" which has 3 meanings[1] none of which I recognize as the
> intended meaning. Perhaps "subliminal desire"[2] is meant, that is, a
> desire that is so faint that it is not discernible by the conscious
> mind, but that usage is said to be reserved for stimuli and one may
> consider it a stretch to include a desire under stimuli. If my analysis
> so far seems correct I tentatively propose "secret desire" or "furtive
> desire" as corrections.

Thanks, I agree.  I'll just delete "sublimated", as I think it reads
well with no adjective there.

     Neil



^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: Typos in the manual
  2011-02-15 20:21       ` Mark Harig
@ 2011-02-15 23:55         ` Neil Jerram
  2011-02-16  0:52           ` Mark Harig
  0 siblings, 1 reply; 29+ messages in thread
From: Neil Jerram @ 2011-02-15 23:55 UTC (permalink / raw)
  To: Mark Harig; +Cc: bug-guile, Ralf.Wildenhues

Mark Harig <idirectscm@aim.com> writes:

> Likewise, "make an intervention" implies that the author intends to
> intervene or stop or prevent something.  But the author is not hoping
> to stop compiler junkies from continuing their habit of writing code
> for compilers -- to the contrary.  Given the text that follows this
> phrase, "make an interjection" is probably what was intended.
> Alternatively, "make an entreaty" would describe the type of
> interjection that is to follow.

Thanks.  I agree that "make an intervention" isn't right.  I've gone for
"At this point we take a detour from the impersonal tone of the rest of
the manual."  Does that sound OK?

    Neil



^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: Typos in the manual
  2011-02-15 22:32       ` Mark Harig
@ 2011-02-16  0:14         ` Neil Jerram
  2011-02-16  2:43           ` Mark Harig
  2011-02-16  3:03           ` Mark Harig
  2011-02-16 21:17         ` Ludovic Courtès
  1 sibling, 2 replies; 29+ messages in thread
From: Neil Jerram @ 2011-02-16  0:14 UTC (permalink / raw)
  To: Mark Harig; +Cc: bug-guile, Ralf.Wildenhues

Mark Harig <idirectscm@aim.com> writes:

>>
>> > Both "i.e." and "e.g." should always be followed by a comma.
>>
>> Well.  Let me tell you.  I've written those kinds of patches before,
>> adding a comma unconditionally and all.  After a few maintainers of
>> some packages rejected them, I've become less enthused.
>>
>
> Something that's long been a mystery to me is why it is that computer
> programmers, who spend their days learning and following the rules and
> idioms of various programming languages, do not want to learn and
> follow the rules and idioms of natural languages.

Because computer languages are constrained by the specifications and
tools that interpret them, whereas natural languages evolve and diverge
through human usage?

> Reference manuals should strive to follow grammar and usage rules as
> much as possible in a jargon-filled context.  There is enough room
> already for confusion and lack of precision.

But surely you don't believe that there is a One True set of "grammar
and usage rules"?

>> Also, while the Chicago Manual of Style recommends it, some other 
> online
>> grammar sites mention that it is American English style, but British
>> English would not add a comma afterwards.

My feeling is consistent with that.  I'm British, and I'd say there are
lots of cases where it is more natural (to me) not to have a comma after
"i.e." or "e.g.".

> To propose that the comma sometimes be included and sometimes be
> omitted after "i.e." and "e.g." should be considered the same as
> proposing that the comma following the words "that is" and "for
> example" are optional.

I'd say that's a false premise (and hence makes the rest of your post
unfounded).  "i.e." and "e.g." are useful precisely because they are
more concise than "that is" and "for example", and hence they have
different effects on the flow of their containing sentence.  Normally
the effect is that they slow the sentence down _less_ than "that is" or
"for example" would - which IMO is often an advantage.  To require a
comma in every case would be to obscure that difference.

> Example 1:
>
> By "simple" we mean data types that are not primarily used as
> containers to hold other data -- i.e. pairs, lists, vectors and so on.

In case it helps to explain my position here: when I read this sentence
to myself, whether out loud or in my head, there is no pause after the
"i.e.".  To me this is natural, and is good because it allows the
sentence to complete without unnecessary delay.

Is there a pause when you read it to yourself?

Regards,
        Neil



^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: Typos in the manual
  2011-02-15 23:55         ` Neil Jerram
@ 2011-02-16  0:52           ` Mark Harig
  2011-02-16 22:37             ` Neil Jerram
  0 siblings, 1 reply; 29+ messages in thread
From: Mark Harig @ 2011-02-16  0:52 UTC (permalink / raw)
  To: neil; +Cc: bug-guile, Ralf.Wildenhues

>
> > Likewise, "make an intervention" implies that the author intends to
> > intervene or stop or prevent something.  But the author is not 
hoping
> > to stop compiler junkies from continuing their habit of writing code
> > for compilers -- to the contrary.  Given the text that follows this
> > phrase, "make an interjection" is probably what was intended.
> > Alternatively, "make an entreaty" would describe the type of
> > interjection that is to follow.
>
> Thanks.  I agree that "make an intervention" isn't right.  I've gone 
for
> "At this point we take a detour from the impersonal tone of the rest 
of
> the manual."  Does that sound OK?
>

"take a detour" implies that there is an obstacle that is preventing
the author from what would otherwise be the desirable route.  I cannot
tell that there is any such obstacle.  But if you want to indicate a
temporary change in the discussion, then "make a digression" or some
form of that phrase could be used.

"Digression" has the same lack of precision that "interjection" has,
namely, that it does not say what kind or type of digression it is or
what the purpose of the digression is.  "Entreaty" or "plea" are more
specific, but might not be quite what is intended.  I do not have a
suggested sentence, other than to say that what the original author
appears to have in mind is to make explicit the change to informal
tone, and then provide some description of the reason for the
following text (originally, to "make an intervention").

Also, this is confusing to me because the section is titled "Extending
the Compiler," which implies (to me) that it will describe how to
extend the compiler, but instead it is a description of areas of the
Guile compiler that need improvement and extending.  It might have
been better titled "Helping Improve and Extend the Compiler."  It
might also be more appropriate to move this section to an appendix
because it does not provide instructions.

--



^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: Typos in the manual
  2011-02-16  0:14         ` Neil Jerram
@ 2011-02-16  2:43           ` Mark Harig
  2011-02-16  3:30             ` Francis Southern
  2011-02-16  3:03           ` Mark Harig
  1 sibling, 1 reply; 29+ messages in thread
From: Mark Harig @ 2011-02-16  2:43 UTC (permalink / raw)
  To: neil; +Cc: bug-guile, Ralf.Wildenhues


> >> Also, while the Chicago Manual of Style recommends it, some other
> > online
> >> grammar sites mention that it is American English style, but 
British
> >> English would not add a comma afterwards.
>
> My feeling is consistent with that.  I'm British, and I'd say there 
are
> lots of cases where it is more natural (to me) not to have a comma 
after
> "i.e." or "e.g.".
>

This is the crux of the argument.  Should the GNU Guile manual be
written using British English or American English, both in grammar and
spelling?  American English usage rules require a comma, while British
English requires that there not to be a comma.  There needs to be a
decision about which set of usage rules should be used in the primary
version of the manual, and then differences can be resolved in
translations.  But whichever is decided, it should not be "use a comma
if you feel it's needed; otherwise, leave it out."  Reference manuals
are not the place for personal style.  Let's leave that for tutorials.

--



^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: Typos in the manual
  2011-02-16  0:14         ` Neil Jerram
  2011-02-16  2:43           ` Mark Harig
@ 2011-02-16  3:03           ` Mark Harig
  2011-02-16  8:18             ` Thien-Thi Nguyen
  2011-02-17  0:10             ` Neil Jerram
  1 sibling, 2 replies; 29+ messages in thread
From: Mark Harig @ 2011-02-16  3:03 UTC (permalink / raw)
  To: neil; +Cc: bug-guile, Ralf.Wildenhues

Some of the discussion below was getting too far off-topic from the
question of whether to follow "i.e." and "e.g." with commas in all
instances or not to follow "i.e." and "e.g." with commas in any 
instance,
so I have written a response in a separate message.

>
> >>
> >> > Both "i.e." and "e.g." should always be followed by a comma.
> >>
> >> Well.  Let me tell you.  I've written those kinds of patches 
before,
> >> adding a comma unconditionally and all.  After a few maintainers of
> >> some packages rejected them, I've become less enthused.
> >>
> >
> > Something that's long been a mystery to me is why it is that 
computer
> > programmers, who spend their days learning and following the rules 
and
> > idioms of various programming languages, do not want to learn and
> > follow the rules and idioms of natural languages.
>
> Because computer languages are constrained by the specifications and
> tools that interpret them, whereas natural languages evolve and 
diverge
> through human usage?
>

Unfortunately, this answer does not resolve the mystery for me.

1) Both computer and natural languages evolve (How else would we
explain, e.g., C90 and C99, among many examples?)

2) Don't confuse the expressiveness and flexibility of natural languages
with a lack of standards.

Standard, written usage of natural language, as opposed to constantly
changing spoken slang, does not evolve very rapidly.  We can read
"The Great Gatsby" without any need to refer to a grammar reference,
despite it's being  written nearly a century ago, not to mention, say, 
Dickens.
Verbs are still verbs, nouns are nouns, sentences still have main and
subordinate clauses, etc.  But I cannot read much of Chaucer without
some translating reference.  Perhaps this is because there were no
dictionaries or grammar references then?

3) Computer language specifications do not say anything about idioms,
and yet programmers consider idioms to be significant.  How can that
be when they are not in the specification?

4) Programmers develop strong opinions about what is ugly or clean
in computer languages, despite the fact that this is not described in 
the
language specifications.  Yet, when something is pointed out as clean
or ugly in natural language, that developed sense is dismissed.

5) Your rhetorical question points out some differences between computer
languages and natural languages while ignoring the quite significant
similarities between them, which for me is the point of the mystery.
(Why do they miss the large similarities but see the small differences?)

> > Reference manuals should strive to follow grammar and usage rules as
> > much as possible in a jargon-filled context.  There is enough room
> > already for confusion and lack of precision.
>
> But surely you don't believe that there is a One True set of "grammar
> and usage rules"?
>

No, I don't believe there is.  But I think this question is a
red-herring.  The reverse red-herring question would be "But surely
you don't believe that there are no grammar and usage rules?"

--



^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: Typos in the manual
  2011-02-16  2:43           ` Mark Harig
@ 2011-02-16  3:30             ` Francis Southern
  2011-02-16 23:46               ` Neil Jerram
  0 siblings, 1 reply; 29+ messages in thread
From: Francis Southern @ 2011-02-16  3:30 UTC (permalink / raw)
  To: bug-guile

On 15 February 2011 20:43, Mark Harig <idirectscm@aim.com> wrote:
>
>> >> Also, while the Chicago Manual of Style recommends it, some other online
>> >> grammar sites mention that it is American English style, but British
>> >> English would not add a comma afterwards.
>>
>> My feeling is consistent with that.  I'm British, and I'd say there are
>> lots of cases where it is more natural (to me) not to have a comma after
>> "i.e." or "e.g.".
>>
>
> This is the crux of the argument.  Should the GNU Guile manual be
> written using British English or American English, both in grammar and
> spelling?  American English usage rules require a comma, while British
> English requires that there not to be a comma.  There needs to be a
> decision about which set of usage rules should be used in the primary
> version of the manual, and then differences can be resolved in
> translations.  But whichever is decided, it should not be "use a comma
> if you feel it's needed; otherwise, leave it out."  Reference manuals
> are not the place for personal style.  Let's leave that for tutorials.
>

While I agree that a consistent style is desirable for a manual, I
just wanted to point out that the issue at hand is definitely not a
British vs. American English debate.
For example, although he has nothing to say on the matter (that I
could find), you'll notice that H.W. Fowler quite consistently uses a
comma after "i.e." and "e.g." in his book, "The King's English" [0].
I sincerely doubt that anyone would dare to call his English
Americanised.

Personally, although it's neither here nor there, I'm pro-comma and
most definitely en_GB.
Francis


[0] - http://www.bartleby.com/116/213.html (An arbitrary page, but if
you search it for "i.e." you'll see the comma.)



^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: Typos in the manual
  2011-02-16  3:03           ` Mark Harig
@ 2011-02-16  8:18             ` Thien-Thi Nguyen
  2011-02-17  0:10             ` Neil Jerram
  1 sibling, 0 replies; 29+ messages in thread
From: Thien-Thi Nguyen @ 2011-02-16  8:18 UTC (permalink / raw)
  To: Mark Harig; +Cc: bug-guile, Ralf.Wildenhues, neil

() Mark Harig <idirectscm@aim.com>
() Tue, 15 Feb 2011 22:03:39 -0500

   (Why do they miss the large similarities but see the small differences?)

This is a human condition that afflicts even programmers.



^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: Typos in the manual
  2011-02-15 22:32       ` Mark Harig
  2011-02-16  0:14         ` Neil Jerram
@ 2011-02-16 21:17         ` Ludovic Courtès
  2011-02-17  0:14           ` Neil Jerram
  2011-02-17  3:13           ` Mark Harig
  1 sibling, 2 replies; 29+ messages in thread
From: Ludovic Courtès @ 2011-02-16 21:17 UTC (permalink / raw)
  To: bug-guile

Hi!

While we’re at it...

Mark Harig <idirectscm@aim.com> writes:

> By "simple" we mean data types that are not primarily used as
> containers to hold other data -- i.e. pairs, lists, vectors and so on.

This should be “to hold other data---i.e., pairs”, i.e., this should be
an em dash with no surrounding spaces.

  https://secure.wikimedia.org/wikipedia/en/wiki/Emdash#Em_dash

I think I fixed some of them in the past, but not all.  Any takers?  :-)

Thanks,
Ludo’.




^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: Typos in the manual
  2011-02-16  0:52           ` Mark Harig
@ 2011-02-16 22:37             ` Neil Jerram
  0 siblings, 0 replies; 29+ messages in thread
From: Neil Jerram @ 2011-02-16 22:37 UTC (permalink / raw)
  To: Mark Harig; +Cc: bug-guile, Ralf.Wildenhues, neil

On 16 February 2011 00:52, Mark Harig <idirectscm@aim.com> wrote:

> "take a detour" implies that there is an obstacle that is preventing
> the author from what would otherwise be the desirable route.

No, not really.  For example, the Michelin travel guides have been
using the phrase "worth a detour" for many years.

> Also, this is confusing to me because the section is titled "Extending
> the Compiler," which implies (to me) that it will describe how to
> extend the compiler, but instead it is a description of areas of the
> Guile compiler that need improvement and extending.  It might have
> been better titled "Helping Improve and Extend the Compiler."  It
> might also be more appropriate to move this section to an appendix
> because it does not provide instructions.

I think it works fine to have this little piece of encouragement here.
 Moving it elsewhere would dissociate it from its subject (i.e., what
the encouragement is about).

         Neil



^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: Typos in the manual
  2011-02-16  3:30             ` Francis Southern
@ 2011-02-16 23:46               ` Neil Jerram
  0 siblings, 0 replies; 29+ messages in thread
From: Neil Jerram @ 2011-02-16 23:46 UTC (permalink / raw)
  To: Francis Southern; +Cc: bug-guile

Francis Southern <francis.southern@gmail.com> writes:

> On 15 February 2011 20:43, Mark Harig <idirectscm@aim.com> wrote:
>>
>> This is the crux of the argument.  Should the GNU Guile manual be
>> written using British English or American English, both in grammar and
>> spelling?  American English usage rules require a comma, while British
>> English requires that there not to be a comma.  There needs to be a
>> decision about which set of usage rules should be used in the primary
>> version of the manual, and then differences can be resolved in
>> translations.  But whichever is decided, it should not be "use a comma
>> if you feel it's needed; otherwise, leave it out."  Reference manuals
>> are not the place for personal style.  Let's leave that for tutorials.
>>
>
> While I agree that a consistent style is desirable for a manual,

You know, actually I disagree with that.

The Guile manual is around 800 pages long, and I think it does no harm
at all to have a little variability, or for different voices to come
through here and there.

It's important for the technical material to be correct and clearly
described, of course.  In my view the other two high level requirements
are that there should be an overall sense of narrative through the
manual, and that any individual section or related group of sections
should read well in their own context.

Clearly, in the world in general, there are significant forces that
encourage closely following a consistent style: basically all commercial
organisations, and in particular journalism.  But I think that's because
they are big organisations with lots of people, and it's easier overall
to lay down rules than to apply judgement in each case.  As things stand
at the moment, I don't think that needs to apply to the Guile manual.

> I
> just wanted to point out that the issue at hand is definitely not a
> British vs. American English debate.
> For example, although he has nothing to say on the matter (that I
> could find), you'll notice that H.W. Fowler quite consistently uses a
> comma after "i.e." and "e.g." in his book, "The King's English" [0].
> I sincerely doubt that anyone would dare to call his English
> Americanised.

Thanks.  And another big British pro-comma reference is the Economist's
style guide.

So I accept that, democratically speaking, I've lost the argument.
Nevertheless, this isn't something that I personally want to spend time
on.  I think there's loads more important stuff to review and improve in
the manual, and I'd rather focus on that.  On the other hand, if there
are more contributors on board in future, and one of them wants to work
on this, I won't object.

I hope that we are now approaching a point where the manual is
technically complete and correct, so please - anyone looking at the
manual - do regard it all as fair game, report any mistakes or problems
in understanding, check that the examples actually work, and so on.

Regards,
       Neil



^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: Typos in the manual
  2011-02-16  3:03           ` Mark Harig
  2011-02-16  8:18             ` Thien-Thi Nguyen
@ 2011-02-17  0:10             ` Neil Jerram
  2011-02-17  1:21               ` Mark Harig
  1 sibling, 1 reply; 29+ messages in thread
From: Neil Jerram @ 2011-02-17  0:10 UTC (permalink / raw)
  To: Mark Harig; +Cc: bug-guile, Ralf.Wildenhues

Mark Harig <idirectscm@aim.com> writes:

> Some of the discussion below was getting too far off-topic [...]

Hi Mark,

Your development of the argument below is interesting, and I think it
could be an interesting discussion to have.  In this email, though, I
just wanted to mention a couple of points, one of which I think I didn't
get quite right in my previous reply.

>> > Something that's long been a mystery to me is why it is that 
> computer
>> > programmers, who spend their days learning and following the rules 
> and
>> > idioms of various programming languages, do not want to learn and
>> > follow the rules and idioms of natural languages.
>>
>> Because computer languages are constrained by the specifications and
>> tools that interpret them, whereas natural languages evolve and 
> diverge
>> through human usage?

When I read your para above before, it (strangely) didn't occur to me
that it could be intended to include reference to me and the Guile
manual.  Hence my general reply above, about the practical constraints
on computer language evolution being tighter than those on human
languages.

Now that that does occur to me, I see that my reply could be read as
implying "yes, I am knowingly not learning and following the rules...".

Just to be clear then, I didn't mean to imply that.  In fact I believe
that I and the Guile manual do "follow the rules and idioms of natural
languages."  Note in particular that this thread about "i.e.," is
nothing to do with the looseness of human language constraints (i.e.,
the kind of thing that allows many people today to say "you was" rather
than "you were").  It's to do with a convention that has forked in two
standard forms of English.

> 4) Programmers develop strong opinions about what is ugly or clean
> in computer languages, despite the fact that this is not described in
> the
> language specifications.  Yet, when something is pointed out as clean
> or ugly in natural language, that developed sense is dismissed.

When you say "dismissed", are you including this thread, and/or Guile
manual discussions in general?

Regards,
        Neil



^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: Typos in the manual
  2011-02-16 21:17         ` Ludovic Courtès
@ 2011-02-17  0:14           ` Neil Jerram
  2011-02-17  3:13           ` Mark Harig
  1 sibling, 0 replies; 29+ messages in thread
From: Neil Jerram @ 2011-02-17  0:14 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: bug-guile

ludo@gnu.org (Ludovic Courtès) writes:

> Hi!
>
> While we’re at it...
>
> Mark Harig <idirectscm@aim.com> writes:
>
>> By "simple" we mean data types that are not primarily used as
>> containers to hold other data -- i.e. pairs, lists, vectors and so on.
>
> This should be “to hold other data---i.e., pairs”, i.e., this should be
> an em dash with no surrounding spaces.
>
>   https://secure.wikimedia.org/wikipedia/en/wiki/Emdash#Em_dash

There's an "i.e." without a comma on that page, hooray!  :-)

     Neil



^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: Typos in the manual
  2011-02-17  0:10             ` Neil Jerram
@ 2011-02-17  1:21               ` Mark Harig
  0 siblings, 0 replies; 29+ messages in thread
From: Mark Harig @ 2011-02-17  1:21 UTC (permalink / raw)
  To: neil; +Cc: bug-guile, Ralf.Wildenhues

> >
> > >> > Something that's long been a mystery to me is why it is that
> > >> > computer programmers, who spend their days learning and
> > >> > following the rules and idioms of various programming
> > >> > languages, do not want to learn and follow the rules and
> > >> > idioms of natural languages.
> > >>
> > >> Because computer languages are constrained by the specifications 
and
> > >> tools that interpret them, whereas natural languages evolve and
> > >> diverge through human usage?
> >
> > When I read your para above before, it (strangely) didn't occur to 
me
> > that it could be intended to include reference to me and the Guile
> > manual.  Hence my general reply above, about the practical 
constraints
> > on computer language evolution being tighter than those on human
> > languages.
> >

It wasn't intended to reference you or the Guile reference manual.  It
was a response to Ralf Wildenhues's recounting that he had submitted
patches that corrected usage to many projects and had them rejected.

> > Just to be clear then, I didn't mean to imply that.  In fact I 
believe
> > that I and the Guile manual do "follow the rules and idioms of 
natural
> > languages."  Note in particular that this thread about "i.e.," is
> > nothing to do with the looseness of human language constraints 
(i.e.,
> > the kind of thing that allows many people today to say "you was" 
rather
> > than "you were").  It's to do with a convention that has forked in 
two
> > standard forms of English.
> >

Understood.

> > > 4) Programmers develop strong opinions about what is ugly or clean
> > > in computer languages, despite the fact that this is not 
described in
> > > the language specifications.  Yet, when something is pointed out
> > > as clean or ugly in natural language, that developed sense is 
dismissed.
> >
> > When you say "dismissed", are you including this thread, and/or 
Guile
> > manual discussions in general?
> >

No, it was a general observation of the irony.

--



^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: Typos in the manual
  2011-02-16 21:17         ` Ludovic Courtès
  2011-02-17  0:14           ` Neil Jerram
@ 2011-02-17  3:13           ` Mark Harig
  2011-02-17 11:33             ` Andy Wingo
  2011-02-21 20:23             ` Ludovic Courtès
  1 sibling, 2 replies; 29+ messages in thread
From: Mark Harig @ 2011-02-17  3:13 UTC (permalink / raw)
  To: ludo; +Cc: bug-guile

>
> > By "simple" we mean data types that are not primarily used as
> > containers to hold other data -- i.e. pairs, lists, vectors and so
> > on.
>
> This should be “to hold other data---i.e., pairs”, i.e., this should
> be an em dash with no surrounding spaces.


Agreed, except that both instances of the Latin abbreviations in your
sentence should be replaced by the words "that is", and both instances
should be preceded by an em dash:

   This should be “to hold other data---that is, pairs”---that is,
   this should be an em dash with no surrounding spaces.

Unfortunately, this opens another can of worms because the internet is
chock full of people using Latin abbreviations in English sentences
outside of parenthetical expressions.


Here are the relevant rules that I learned years ago.  They are
followed by some examples from the Emacs manual (which also contains
many examples that do not follow these rules).

1) Primarily, English sentences should contain English words.  Numbers
should be spelled out when they are in the low digits.  When foreign
words or phrases are included, they should be printed in italics
(unless they have already been accepted into English).  This applies
to general writing.  Mathematics and other academic fields have their
own specialized rules.

2) Because of the previous rule, Latin abbreviations should NOT be
used in English sentences, although there is an exception: when they
are used inside and begin parenthesized expressions, (e.g., inside
this expression).  This applies to "i.e.", "e.g.", and "etc.".  The
abbreviations "i.e." and "e.g." should always be followed by a comma.

3) Clauses that are set off with "that is," or "for example," should
begin with an em dash, and if the clause is in the interior of the
sentence it should be followed with an em dash.  If the following
clause is an independent clause then the em dash is not required.


Examples for rule 2)

- "Send mail through an external mail host (e.g., your Internet
   service provider's SMTP server)."

- "You can force these commands to move according to 'logical lines'
   (i.e., according to the text lines in the buffer) by setting the
   variable `line-move-visual' to `nil'; if a logical line occupies
   multiple screen lines, the cursor then skips over the additional
   screen lines."

- "Finally, you can set the mark by holding down the shift key while
   typing certain cursor motion commands (such as `S-<right>',
   `S-C-f', `S-C-n', etc.)"


Examples for rule 3)

- "Note that in order to insert rows after the last row at the bottom
   of a table, you must place point below the table--that is, outside
   the table--prior to invoking this command."

- "When you edit a file that changes automatically and frequently--for
   example, a log of output from a process that continues to run--it
   may be useful for Emacs to revert the file without querying you."

- "Letters represent various nontrivial 'coding systems'--for example,
   `1' represents ISO Latin-1."

- "This feature is useful for certain character-only terminals built
   to support specific languages or character sets--for example,
   European terminals that support one of the ISO Latin character
   sets."

- `\{N\}' is a postfix operator that specifies repetition N
   times--that is, the preceding regular expression must match exactly
   N times in a row.

- "You will probably want to use a fixed-width default font--that is,
   a font in which all characters have the same width."

- "The command `C-c C-b' (`message-goto-body') moves point to just
   after the header separator line--that is, to the beginning of the
   body."


The next examples, which do NOT use em dashes, are INCORRECT.  The
semicolon should be replaced with an em dash.  The em dash is required
when the subordinate clause is not an independent clause.

- "A date may be "generic"; that is, partially unspecified."

- "By convention, a command name consists of one or more words,
  separated by hyphens; for example, `auto-fill-mode' or
  `manual-entry'."

- "This variable, like all the variables that control Font Lock mode,
   take effect whenever fontification is done; that is, potentially at
   any time."


The next examples, which do NOT use em dashes, are CORRECT.  The
clauses are independent clauses that can stand on their own (they have
their own subject and predicate).

- "The numbers of days shown is inclusive; that is, it includes the
   days specified by mark and point."

- "`C-x C-s' used on a buffer that is not visiting a file has the same
   effect as `C-x C-w'; that is, it reads a file name, marks the
   buffer as visiting that file, and saves it there."

- "However, if a word starts with single-quotes, these are treated as
   a prefix for purposes such as capitalization.  That is, `M-c' will
   convert `'hello'' into `'Hello'', as expected."

- "Some Emacs commands are invoked by just one input event; for
   example, `C-f' moves forward one character in the buffer."

- "Many Emacs commands move point to different places in the buffer;
   for example, you can place point by clicking mouse button 1
   (normally the left button) at the desired location."


--



^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: Typos in the manual
  2011-02-17  3:13           ` Mark Harig
@ 2011-02-17 11:33             ` Andy Wingo
  2011-02-21 20:23             ` Ludovic Courtès
  1 sibling, 0 replies; 29+ messages in thread
From: Andy Wingo @ 2011-02-17 11:33 UTC (permalink / raw)
  To: Mark Harig; +Cc: bug-guile, ludo

On Thu 17 Feb 2011 04:13, Mark Harig <idirectscm@aim.com> writes:

> Here are the relevant rules that I learned years ago.  They are
> followed by some examples from the Emacs manual (which also contains
> many examples that do not follow these rules).

A very interesting discussion!  At first read, your rules about em
dashes and semicolons and i.e. and e.g. all sounded very strident to me,
but then your examples support your points well -- the texts evince the
rules.  To my untrained eye and irreverent hand, anyway.

So... roll on, Guile manual, roll on?  Hopefully you and Neil will fall
into a state of mental synchronization, so that we do productive work on
the manual.  Though if you get too synchronized we list-readers will
lose the benefit of these digressions :)

Cheers,

Andy
-- 
http://wingolog.org/



^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: Typos in the manual
@ 2011-02-19 17:40 Bruno Haible
  2011-02-19 17:56 ` Ralf Wildenhues
  0 siblings, 1 reply; 29+ messages in thread
From: Bruno Haible @ 2011-02-19 17:40 UTC (permalink / raw)
  To: bug-guile, Ralf Wildenhues

Regarding this commit:
<http://git.savannah.gnu.org/gitweb/?p=guile.git;a=commitdiff;h=c2c550ca9d2442d070f79ed8bacb8db173c72df3>

Ralf Wildenhues wrote in <http://lists.gnu.org/archive/html/bug-guile/2011-02/msg00052.html>:

> > >     latin1 vs. latin-1,
> > 
> > I'm happy to defer to you on that.  What do you recommend?
> 
> Never mind on this one.  Prose already uses latin-1 consistently in the
> *.texi files, and I assume actual code references to Guile and Emacs
> code need use the spelling that is correct there.

Actually, "latin1" is a standardized encoding name (standardized by IANA in
<http://www.iana.org/assignments/character-sets>), whereas "latin-1" is not.

While some software recognizes "latin-1" as an alias for "latin1", other
software doesn't, like 'iconv' in glibc and GNU libiconv:

  $ echo abc | iconv -t latin1
  abc
  $ echo abc | iconv -t latin-1
  iconv: conversion to `latin-1' is not supported
  Try `iconv --help' or `iconv --usage' for more information.

Therefore it's a good idea to use in the documentation the standardized name
and not some different name that appears "prettier" but does not actually work.

Bruno
-- 
In memoriam Friedrich Weißler <http://en.wikipedia.org/wiki/Friedrich_Weißler>



^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: Typos in the manual
  2011-02-19 17:40 Bruno Haible
@ 2011-02-19 17:56 ` Ralf Wildenhues
  2011-02-24 23:31   ` Ludovic Courtès
  0 siblings, 1 reply; 29+ messages in thread
From: Ralf Wildenhues @ 2011-02-19 17:56 UTC (permalink / raw)
  To: Bruno Haible; +Cc: bug-guile

Hi Bruno,

* Bruno Haible wrote on Sat, Feb 19, 2011 at 06:40:23PM CET:
> Regarding this commit:
> <http://git.savannah.gnu.org/gitweb/?p=guile.git;a=commitdiff;h=c2c550ca9d2442d070f79ed8bacb8db173c72df3>
> Ralf Wildenhues wrote in <http://lists.gnu.org/archive/html/bug-guile/2011-02/msg00052.html>:
> 
> > > >     latin1 vs. latin-1,
> > > 
> > > I'm happy to defer to you on that.  What do you recommend?
> > 
> > Never mind on this one.  Prose already uses latin-1 consistently in the
> > *.texi files, and I assume actual code references to Guile and Emacs
> > code need use the spelling that is correct there.
> 
> Actually, "latin1" is a standardized encoding name (standardized by IANA in
> <http://www.iana.org/assignments/character-sets>), whereas "latin-1" is not.

Yes, that's what I meant when I wrote "actual code references", but
obviously I was way too terse and failed to express myself clearly at
all.  Ludo, could you revert those bits?

> Therefore it's a good idea to use in the documentation the standardized name
> and not some different name that appears "prettier" but does not actually work.

I agree.

Thanks for proof-reading!
Ralf



^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: Typos in the manual
  2011-02-17  3:13           ` Mark Harig
  2011-02-17 11:33             ` Andy Wingo
@ 2011-02-21 20:23             ` Ludovic Courtès
  1 sibling, 0 replies; 29+ messages in thread
From: Ludovic Courtès @ 2011-02-21 20:23 UTC (permalink / raw)
  To: Mark Harig; +Cc: bug-guile

Hi Mark,

Mark Harig <idirectscm@aim.com> writes:

> Here are the relevant rules that I learned years ago.  They are
> followed by some examples from the Emacs manual (which also contains
> many examples that do not follow these rules).

Thanks for the informative post, I’ll try to keep that in mind!

Like Andy, I would welcome improvements in this area in the manual.  :-)

Thanks,
Ludo’.



^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: Typos in the manual
  2011-02-19 17:56 ` Ralf Wildenhues
@ 2011-02-24 23:31   ` Ludovic Courtès
  0 siblings, 0 replies; 29+ messages in thread
From: Ludovic Courtès @ 2011-02-24 23:31 UTC (permalink / raw)
  To: bug-guile

Hi,

Ralf Wildenhues <Ralf.Wildenhues@gmx.de> writes:

> * Bruno Haible wrote on Sat, Feb 19, 2011 at 06:40:23PM CET:
>> Regarding this commit:
>> <http://git.savannah.gnu.org/gitweb/?p=guile.git;a=commitdiff;h=c2c550ca9d2442d070f79ed8bacb8db173c72df3>
>> Ralf Wildenhues wrote in <http://lists.gnu.org/archive/html/bug-guile/2011-02/msg00052.html>:
>> 
>> > > >     latin1 vs. latin-1,
>> > > 
>> > > I'm happy to defer to you on that.  What do you recommend?
>> > 
>> > Never mind on this one.  Prose already uses latin-1 consistently in the
>> > *.texi files, and I assume actual code references to Guile and Emacs
>> > code need use the spelling that is correct there.
>> 
>> Actually, "latin1" is a standardized encoding name (standardized by IANA in
>> <http://www.iana.org/assignments/character-sets>), whereas "latin-1" is not.
>
> Yes, that's what I meant when I wrote "actual code references", but
> obviously I was way too terse and failed to express myself clearly at
> all.  Ludo, could you revert those bits?

Done, thanks!

Ludo’.




^ permalink raw reply	[flat|nested] 29+ messages in thread

end of thread, other threads:[~2011-02-24 23:31 UTC | newest]

Thread overview: 29+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-02-08 20:25 Typos in the manual Ralf Wildenhues
2011-02-13  0:49 ` Neil Jerram
2011-02-13  7:00   ` Ralf Wildenhues
2011-02-13 22:29     ` Neil Jerram
2011-02-15 15:48     ` Marijn
2011-02-15 20:21       ` Mark Harig
2011-02-15 23:55         ` Neil Jerram
2011-02-16  0:52           ` Mark Harig
2011-02-16 22:37             ` Neil Jerram
2011-02-15 23:49       ` Neil Jerram
2011-02-15 20:48   ` Mark Harig
2011-02-15 21:14     ` Ralf Wildenhues
2011-02-15 22:32       ` Mark Harig
2011-02-16  0:14         ` Neil Jerram
2011-02-16  2:43           ` Mark Harig
2011-02-16  3:30             ` Francis Southern
2011-02-16 23:46               ` Neil Jerram
2011-02-16  3:03           ` Mark Harig
2011-02-16  8:18             ` Thien-Thi Nguyen
2011-02-17  0:10             ` Neil Jerram
2011-02-17  1:21               ` Mark Harig
2011-02-16 21:17         ` Ludovic Courtès
2011-02-17  0:14           ` Neil Jerram
2011-02-17  3:13           ` Mark Harig
2011-02-17 11:33             ` Andy Wingo
2011-02-21 20:23             ` Ludovic Courtès
  -- strict thread matches above, loose matches on Subject: below --
2011-02-19 17:40 Bruno Haible
2011-02-19 17:56 ` Ralf Wildenhues
2011-02-24 23:31   ` Ludovic Courtès

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).