[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[plt-scheme] Annotative forms in expand-program?
I was thinking I was all set in using the expanded form of a program,
and I'd gain magical compatibility with any program implemented in DrScheme.
The program
(define (fact n)
(if (zero? n)
1
(* n (fact (n (- n 1))))))
Expands as follows under the language setting "Textual MzScheme":
(define-values
(fact)
(lambda (n)
(if (#%app (#%top zero?) n)
(#%datum 1)
(#%app (#%top *) n (#%app (#%top fact)
(#%app (#%top -) n (#%datum 1)))))))
Under the "Beginning Student" language, however, I get the following:
(begin
(#%app check-top-level-not-defined (quote define) (quote-syntax fact))
(define-values (fact)
(lambda (n)
(if (#%app verify-boolean (#%app zero? n) (quote if))
(#%datum 1)
(#%app * n (#%app (#%top fact)
(#%app - n (#%datum 1))))))))
I had to fgrep through the collections directory to find, in the "private"
subdirectory of the "lang" collection the string "check-top-level." These
run-time extentions for use in Beginner Scheme show up in the expansion of the
definitions window; if any language can introduce arbitrary code to be
evaluated at run-time into the primitive language, how do I handle expressions
defined in modules that have no meaning in the language of my compiler?
I thought I had a handle on this, but perhaps I didn't; am I missing
something very obvious?
Thanks,
Matt
________________________________________________________________________
Matt Jadud http://www.cs.indiana.edu/~mjadud/
Current Temperature Outside Lindley Hall 80.4 F / 26.9 C
Canterbury Weather: High 60 F / 16 C, Low 50 F / 10 C, Light rain shower (Day)