>From SRFI-12 documentation for condition-property-accessor:

Given a composite condition created with MAKE-COMPOSITE-CONDITION, the procedure returns the value that is associated with prop-key in one of the components that satisfies (CONDITION-PREDICATE kind-key).


But Chicken returns the value associated with kind-key in any member of a composite condition:

(define foo (make-composite-condition (make-property-condition 'foo 'bar 1) (make-property-condition 'baz 'quux 3)))
;; Chicken returns 1.  Behavior is undefined in SRFI-12, but probably should return #f or raise error
((condition-property-accessor 'foo 'quux) foo)
                   

And worse, it may return that of the wrong member:

;;SRFI-12 would return 3, Chicken returns 1
(define bar (make-composite-condition (make-property-condition 'foo 'bar 1) (make-property-condition 'baz 'bar 3)))
((condition-property-accessor 'baz 'bar) bar)

A fix is fairly easy, but I don't know how deeply assumptions about the current implementation run...

Reed Sheridan

_______________________________________________
Chicken-users mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/chicken-users

Reply via email to