I don't know much about language interfaces, but why not have these be constants exported by libguile.so? Is there any reason for other languages to have to make their own lists?

Thanks,
Noah



On Thu, Jan 31, 2013 at 6:45 AM, Andy Wingo <wingo@pobox.com> wrote:
On Thu 31 Jan 2013 12:27, Andy Wingo <wingo@pobox.com> writes:

> On Tue 22 Jan 2013 11:55, Andy Wingo <wingo@pobox.com> writes:
>
>>      SCM_BOOL_F
>>      SCM_BOOL_T
>>      SCM_ELISP_NIL
>>      SCM_EOF_VAL
>>      SCM_EOL
>>      SCM_UNBOUND
>>      SCM_UNDEFINED
>>      SCM_UNSPECIFIED
>>
> Instead, users should just keep a table of what the values of these
> constants are for a given Guile major series.  Defining them as
> enumerated values doesn't help e.g. an Ada compiler.  The particular
> language should make this list in their own source code format, perhaps
> generated by a small C program linked to libguile.

Or by Scheme:

   (for-each
     (lambda (pair)
       (format #t "static const scm_t_bits my_~A = 0x~X;\n"
                  (car pair) (object-address (cdr pair))))
     `(("false" . #f)
       ("true" . #t)
       ("nil" . #nil)
       ("eof" . ,the-eof-object)
       ("eol" . ())
       ("unspecified" . ,*unspecified*)))

   static const scm_t_bits my_false = 0x4;
   static const scm_t_bits my_true = 0x404;
   static const scm_t_bits my_nil = 0x104;
   static const scm_t_bits my_eof = 0xa04;
   static const scm_t_bits my_eol = 0x304;
   static const scm_t_bits my_unspecified = 0x804;

Unbound and undefined are a little trickier.

Andy
--
http://wingolog.org/