[R6RS] Modules, a second question

Manuel Serrano Manuel.Serrano
Thu Sep 30 08:39:06 EDT 2004

> (module foo r6rs
>   (display (foo 3))
>   (define (foo x) x))
> Because the first definition of this module must signal an error,
> Manuel writes:
> > If it does I don't see how the compiler will be able to do a good job
> > when compiling function calls...
> First, let me say that I don't think it's terribly important for
> a compiler to optimize top-level expressions, which are the only
> ones that are made more difficult to optimize by the left-to-right
> order of evaluation here.
This problem does not concern the top level forms.

(module foo r6rs
  (provides gee)

  (if (read)

  (define (foo)
     (let loop ((n 1000000000000000000000000000000000000000000000))
        (if (> n 0)
               (bar n)
               (loop (- n 1))))))

  (define (bar n)
      <whatever you want>)

  (define (gee)

Except if the compiler is particularly clever, the call to "bar" in "foo"
will be poorly compiled. Thus, the "external" call to "gee" will be


More information about the R6RS mailing list