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] |
The 'procedure' vs. 'primitive' distinction is a clumsy way to tell the Guile programmer which functions were also available as C functions in libguile. There are a lot of Scheme procedures in Guile that are also available to C code if it links against libguile. Given the full description of a Scheme function (optional args, rest args, etc.), there's a straightforward way to determine the name of the corresponding C function, the arguments it takes, etc. For example, if you see - Primitive: list-ref LIST K Return the K'th element of LIST... then you know there is a C function that's declared as: SCM scm_list_ref (SCM list, SCM k); Rather than documenting all these functions twice --- once for the Scheme interface and once for the C interface --- the manual should document them once. However, as I say, this is clumsy. It might be better to write the entries like this: - Scheme Procedure: list-ref LIST K - C Function: SCM scm_list_ref (SCM LIST, SCM K) Return the K'th element of List... The Texinfo source corresponding to this would be: @deftypefn {Scheme Procedure} {} list-ref @var{LIST} @deftypefnx {C Procedure} SCM scm_space_p (SCM @var{obj}) Return a true value iff @var{obj} is a space object. @end deftypefn This doesn't quite typeset as well as I'd like. Texinfo doesn't allow you to start with a @deffn and continue with a @deftypefnx, although I don't see any reason why not. We can probably fix makeinfo and texinfo.tex to allow this.