[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#18583: possibly buggy top level behavior in master
From: |
Andy Wingo |
Subject: |
bug#18583: possibly buggy top level behavior in master |
Date: |
Tue, 21 Jun 2016 22:50:02 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux) |
On Mon 29 Sep 2014 15:24, Daniel Llorens <address@hidden> writes:
> The following code:
>
> (define-syntax define-lues
> (syntax-rules ()
> ((_ () exp)
> (call-with-values (lambda () exp) (lambda () 'unspecified)))
> ((_ (var . vars) exp)
> (begin
> (define var (call-with-values (lambda () exp) list))
> (define-lues vars (apply values (cdr var)))
> (define var (car var))))
> ((_ var exp)
> (define var (call-with-values (lambda () exp) list)))))
>
> (define-lues (a) (values (make-vector 3 9)))
> (vector-length a)
>
> In 2.0, either pasting this in the REPL or (load "...") a file
> containing this produces the expected result, 3.
>
> In the current master (f7582), pasting in the REPL produces the
> same result, but loading from a file this produces the error:
>
>> In procedure vector-ref: Wrong type argument in position 1 (expecting
>> vector): (#(9 9 9))
>
> I'm aware of the workarounds, I'm reporting the behavior itself.
Thank you thank you thank you for this report!
Incidentally it has a nice reduction, at the REPL or whereever:
(begin
(define x (list 1))
(define x (car x))
x)
Should be 1, Guile master was giving (1). The reasons are a bug in the
effects analysis for the `define!' primitive. I wonder how I didn't
catch this before! Fixed in master, though sadly with a bytecode
version bump.
Andy
- bug#18583: possibly buggy top level behavior in master,
Andy Wingo <=