guile-devel
[Top][All Lists]
Advanced

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

Re: JACAL, scm


From: Miroslav Silovic
Subject: Re: JACAL, scm
Date: 26 Sep 2001 16:09:21 +0200

Tom Lord <address@hidden> writes:

> Making () and #f the same in Guile is not only important for making
> Emacs lisp a syntax for Guile, it is also important for exchanging
> data structures between Emacs lisp and Guile.  One reason it is
> important to be able to exchange data structures with Emacs is 
> so that Emacs can be used as a front-end to Guile programs.
> 
> Similarly, making () and #f the same in Guile simplifies exchanging
> data with Common Lisp programs.

This topic has been rehashed and, for all practical purposes, solved a
few years ago (mailing list archive search would help?). The
conclusion was that since the intention was to compile elisp into
Guile anyway, all it took for a complete compatibility was to add
elisp-if special form. Basically

(elisp-if block1 block2 block3)

is same as

(if (and block1 (not (eq? block1 ())))
    block2
    block3)

(you don't really need elisp-do or elisp-cond since you can just
rewrite them using elisp-if). The reason why this works is that #f
would never appear in elisp data structures, so you don't have to care
about it.

I find the idea of having both elisp implementation and Guile
implementation linked together within the same application mildly
distasteful, and if you do that, #f and () equality is the least of
your problems (you're going to have two fundamentally different GCs
waging war over which one rules the heap).

-- 
How to eff the ineffable?



reply via email to

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