[dssslist] define inside let body

Subject: [dssslist] define inside let body
From: Joaquín Zuazo <jz@xxxxxxxxx>
Date: 09 Feb 2005 03:16:39 +0100
Hi, I am trying to understand the dsssl standard document (ISO/IEC
10179:1996(E). Trying to put this example to work with openjade, part
8.4 "Definitions" of the document, at top level:

(define p
   (let ((x 5))     
     (define foo (lambda (y) (bar x y)))
     (define bar (lambda (a b) (+ (* a b) a)))
     (foo (+ x 3)))
) 

I get an error :
openjade:protec.dsl:14:2:E: syntactic keyword "define" used as variable
openjade:protec.dsl:15:1:E: missing closing parenthesis
openjade:protec.dsl:15:1:E: missing closing parenthesis
openjade:protec.dsl:16:4:E: unknown top level form "foo"

The same done with "letrec" is working well:
(define p
(let ((x 5))
   (letrec ((foo (lambda (y) (bar x y)))
                (bar (lambda (a b) (+ (* a b) a))))
      (foo (+ x 3)))))

According the standard. body is described (in the same page) as

 [69] body=definition* expression

Is there something I am doing wrong, or openjade does not implement body
in this way ?

Thanks for your help!.

Current Thread