guile-devel
[Top][All Lists]
Advanced

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

Re: Guile Assembler


From: Mark H Weaver
Subject: Re: Guile Assembler
Date: Thu, 03 Sep 2015 20:54:49 -0400
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux)

Panicz Maciej Godek <address@hidden> writes:

> It is not a patch though, but just a separate module called (ice-9
> nice-9) that is meant to be placed in the "ice-9" directory (e.g.
> "/usr/share/guile/2.0/ice-9").
>
> It would definitely need a more elaborate documentation, but the quick
> note is that it:
>
> * allows to destructure arguments to lambda, e.g.
>
> (map (lambda ((a . b)) (+ a b)) '((1 . 2)(3 . 4)(5 . 6)))
>
> * blends named-let with match-let and srfi-71-style let for multiple
> values, legalizing usages like
>
> (let loop ((a (b c) (values 1 (list 2 3))))
> ...
> (loop (values 4 (list 5 6))))

I only just recently noticed this message, but before people start
writing a lot of code like this, I should warn you that in the procedure
call (loop (values 4 (list 5 6))), by the semantics of Guile, that is
supposed to be equivalent to (loop 4).  If it does something else,
that's probably a bug in our optimizer, and it might well act
differently on our master branch already, because the multiple-values
stuff has been cleaned up a lot compared with 2.0.  Anyway, you
certainly should not rely on this behavior.  Sorry...

      Mark



reply via email to

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