[Larceny-users] error compiling cons form

Marco Maggi marco.maggi-ipsu at poste.it
Fri Dec 26 05:16:12 EST 2008


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"





More information about the Larceny-users mailing list