guile-devel
[Top][All Lists]
Advanced

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

%nil once again


From: Daniel Kraft
Subject: %nil once again
Date: Thu, 16 Jul 2009 15:47:54 +0200
User-agent: Thunderbird 2.0.0.0 (X11/20070425)

Hi,

I think I got the test-suite as well as a basic macro implementation (the compiler framework is really cool, that was fairly easy to do); recursive macros do not yet work, but otherwise it looks fine.

However, I want to tackle quasi-quotes (besides others) now; and in Elisp %nil is not only #f of Scheme but also the end-of-list marker (I guess that's why simply using Scheme's #f for %nil does not work).

I did some experiments, and it seems that Scheme respects it partially:

scheme@(guile-user)> `(1 2 3 . ,%nil)
(1 2 3)

(is %nil in Scheme a variable because it needs the unquote?)

However:

scheme@(guile-user)> (null? %nil)
#f
scheme@(guile-user)> (equal? %nil (cdr (list 1)))
#f

It would be cool to teach Guile somehow to treat %nil as the "standard" end-of-list value, such that both of these queries would optimally return true. At least, is there some way to construct lists terminated by %nil using something like the list primitive? Other things needed would be for instance terminating rest-arguments by %nil rather than '() and the like.

So: How is this handled by the interpreter? Is there maybe some runtime-option to make Guile use %nil as end-of-list for lists constructed? Or could we introduce some means to do so?

If that's not a good idea because of performance or other considerations, I guess I'll have to implement some conversion routine and use that? This on the other hand will probably hit Elisp's performance.

Any suggestions and ideas welcome!  Maybe I just fail to see something...

Thanks,
Daniel

--
Done:  Arc-Bar-Cav-Ran-Rog-Sam-Tou-Val-Wiz
To go: Hea-Kni-Mon-Pri




reply via email to

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