Late binding Felix Thibault (25 Apr 2021 21:35 UTC)
Re: Late binding Felix Thibault (26 Apr 2021 00:04 UTC)
Re: Late binding Felix Thibault (26 Apr 2021 04:24 UTC)

Re: Late binding Felix Thibault 26 Apr 2021 04:24 UTC

This seems like a problem only with some implementations there are
other implementations where all of these patterns work:
(match 1 (a a)) => 1
(match (list 3 4) ((a b) (+ a b)) => 7
(match (list 2 3) ((var var) (var b)) (+ var b))) => 5 ; does not work
on master branch

I tried replacing this line that was unchanged from the original:

> >                       (if (equal? v x) (sk ... (id ...)) fk)

to:

(if (equal? v (cdr (assq x ((id . id%) ...)))) (sk ... ((id . id%) ...)) fk)

but (match '(1 1) ((a a) a)) is still failing for all implementations
I have tested. Since I have this working for some patterns, tomorrow I
am going to go through and test all the patterns and try to fix them,
which I am assuming will be something like what I have already done,
at least in part.