Hi Minoru,
Nice debugging --- you pinned down exactly the right thing.
It's a side effect of the move from TinyScheme (0.8.x) to s7 (0.9.x). s7 follows R7RS closely, and there member compares with equal?, which for numbers falls back to eqv?. eqv? treats an exact and an inexact number as different, so (eqv? 1 1.0) is #f --- and therefore so is (member 1.0 '(1 2 3)). The old TinyScheme result (#t) was actually the non-standard one; s7's #f is correct per the spec.
Your fix of using inexact literals in the list is fine. If you'd rather leave the list as integers, s7's member also takes an optional comparison procedure, so you can supply your own test:
(member 1.0 '(1 2 3) =) ; numeric equality, ignores exactness
(member 1.0 '(1 2 3) equivalent?) ; s7's "morally equal", also fine
Both return the matching tail. = is probably the one you want, since your metre values are just numbers --- and a 1.5 still correctly matches nothing.
Glad mkplay is singing again.
Cheers,
Ben
>--
>You received this message because you are subscribed to the Google Groups "Extempore" group.
>To unsubscribe from this group and stop receiving emails from it, send an email to
extemporelan...@googlegroups.com.
>To view this discussion visit
https://groups.google.com/d/msgid/extemporelang/4c43b311-4dea-4196-89f4-17b9f68572c9n%40googlegroups.com.
--
Cheers,
Ben