guile-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Guile API for foreign languages: proposing SCM scm_list_0(void)


From: Andy Wingo
Subject: Re: Guile API for foreign languages: proposing SCM scm_list_0(void)
Date: Thu, 31 Jan 2013 12:45:42 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.2 (gnu/linux)

On Thu 31 Jan 2013 12:27, Andy Wingo <address@hidden> writes:

> On Tue 22 Jan 2013 11:55, Andy Wingo <address@hidden> 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/



reply via email to

[Prev in Thread] Current Thread [Next in Thread]