This is the mail archive of the guile@cygnus.com mailing list for the guile project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: manual terminology: `procedure', `function' etc.



    Tim> Right now the manual uses `procedure' and `function' somewhat
    Tim> arbitrarily, but several categories come to mind: `function'
    Tim> for code that returns a useful value; `procedure' for
    Tim> functions which do not;

Not quite.  In discussing functional programming, function is used to
mean a procedure that does not have side-effects, like sin or cos.
Procedure is a more general term to mean both functiosn and procedures
with side-effects.

I think we should go with just "procedure" for all of them, which is
what R4RS does: even trigonometric functions are listed as
"procedures" in R4RS.

    Tim> `primitive' for Guile functions coded in C; `macro' for code
    Tim> defined with defmacro or define-syntax.

I like the idea of "primitive procedure" for all Guile primitives:
people have a right to know what's primitive.  Regarding "macro", I
believe that R4RS actually uses "syntax" for some standard macros like
"do".  I don't have any good thoughts on this one.

    Tim> Is it useful to employ all of these terms?  My main worry was
    Tim> that it would produce a confusing maze of indices.  However,
    Tim> it appears that any code documented with `@deffn' and friends
    Tim> will appear in the same index regardless of its documentation
    Tim> category, so that's not a cause for concern.

I think that if we keep it down to "procedure", "primitive procedure"
and "syntax" (or "macro") it will be OK.