On a i686-pc-linux-gnu running larceny-5877 compiled with: (setup 'scheme: 'larceny 'host: 'linux86 'sassy 'string-rep: 'flat4)
I COMPILE-LIBRARY file with this chunk of code: (define deferred-exceptions (make-parameter #f)) (define-syntax defer-exceptions (syntax-rules () ((_ ?form0 ?form ...) (guard (exc (else (when (deferred-exceptions) (deferred-exceptions (cons exc (deferred-exceptions)))))) ?form0 ?form ...)))) Ypsilon and Ikarus run a test suite for the library with no problems and no failing tests. Larceny gives me this error: |Compiling uriel/lang.sls | |Error: no handler for exception #<record &compound-condition> |Compound condition has these components: |#<record &assertion> |#<record &who> | who : "car" |#<record &message> | message : " () is not a pair.\n" | |Terminating program execution. but if I replace the form: (cons exc (deferred-exceptions)) with: (cons '(1 2) (deferred-exceptions)) compilation completes fine. Posting the whole code is impossible, if there is the need I can only give you a distribution to download. But, the following program compiles fine: (import (rnrs)) (define-syntax defer-exceptions (syntax-rules () ((_ ?form0 ?form ...) (guard (exc (else (cons exc #t))) ?form0 ?form ...)))) and the MAKE-PARAMETER in the failing library is the following SRFI-39 implementation: (define make-this-parameter (case-lambda ((value validator) (let ((the-parm (make-parameter 'unnamed (validator value)))) (case-lambda ((value) (the-parm (validator value))) (() (the-parm))))) ((value) (make-this-parameter value (lambda (x) x))))) which works with my test suite. I really, really, really do not want to know why compiling CONS does this, just tell me if it is a bug in the compiler and I have to wait for a fix. -- Marco Maggi "Now feel the funk blast!" Rage Against the Machine - "Calm like a bomb" _______________________________________________ Larceny-users mailing list Larceny-users@lists.ccs.neu.edu https://lists.ccs.neu.edu/bin/listinfo/larceny-users