Opened 12 years ago
Closed 11 years ago
#1085 closed defect (fixed)
srfi-1's list= and lset procedures don't check their first arguments
| Reported by: | evhan | Owned by: | |
|---|---|---|---|
| Priority: | not urgent at all | Milestone: | 4.10.0 |
| Component: | core libraries | Version: | 4.8.x |
| Keywords: | srfi-1 | Cc: | |
| Estimated difficulty: |
Description
list=, lset=, lset-union and friends each expect a comparator as the first argument, but nothing bad happens if you don't give one (except some weird results).
(list= '(1) '(2)) ; => #t (lset= '(1) '(2)) ; => #t (lset-union '(1) '(2)) ; => (2) (list= '(1) '(2) '(3)) ; => triggers an error (call of non-procedure: (1))
It seems like these should check the types of their first arguments (which might be as simple as replacing the commented-out check-arg guards from the srfi-1 reference with ##sys#check-closure). On the other hand, some other Schemes (Chibi, Gauche, Racket) do the same thing as we do, currently.
Change History (2)
comment:1 Changed 11 years ago by
| Milestone: | someday → 4.10.0 |
|---|
comment:2 Changed 11 years ago by
| Resolution: | → fixed |
|---|---|
| Status: | new → closed |
Fixed by ca281584884f5ab1d5d83e69031b5e61150a42dd (master) and 996b13c0dd045d75dae492e170eaf2e1f66398e4 (chicken-5).
Note: See
TracTickets for help on using
tickets.

Not sure if worth it, but trivial enough to easily get into 4.10.0