Marco Maggi
2008-12-26 10:16:12 UTC
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.
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"
Marco Maggi
"Now feel the funk blast!"
Rage Against the Machine - "Calm like a bomb"