bug-guile
[Top][All Lists]
Advanced

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

bug#9567: curious match bug (?)


From: Stefan Israelsson Tampe
Subject: bug#9567: curious match bug (?)
Date: Wed, 21 Sep 2011 14:15:53 +0200

This is an old bug I spotted before, it can be solved by inserting an extra let
in the expansion aka

(macroexpand '(match a (par code  ...))
-> '(let ((arg a)) ....)

This is missing from atoms in match so I added that there and the missbehavior dissapears. see the git diffed patch in this post.


On Wed, Sep 21, 2011 at 5:34 AM, Andy Wingo <address@hidden> wrote:
Hi,

Try this:

 (use-modules (language tree-il) (ice-9 match))
 (define foo (parse-tree-il '(let-values (apply (lambda () (lambda-case ((() #f #f #f () ()) (apply (primitive values) (const 1) (const 2)))))) (lambda-case (((a b) #f #f #f () (#{a 134390}# #{b 134391}#)) (apply (primitive list) (lexical a #{a 134390}#) (lexical b #{b 134391}#)))))))
 (match foo
   (($ <let-values> src exp
       ($ <lambda-case> src2 req #f #f #f () gensyms body #f))
    #t)
   (_
    #f))
 => #t

 (match foo
   (($ <let-values> src foo ;; <- rename "exp" to "foo"
       ($ <lambda-case> src2 req #f #f #f () gensyms body #f))
    #t)
   (_
    #f))
 => #f

I tried to reduce this case a bit, but didn't succeed directly, and I
need to move on.  But what is the deal here?

Andy
--
http://wingolog.org/




Attachment: match-bug.patch
Description: Text Data


reply via email to

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