Upgrading portable syntax-case

"Alessandro Colomba" <[email protected]> Mon, 15 Jan 2007 23:24:05 -0500
Newsgroups gmane.comp.java.sisc.devel
Message-ID <[email protected]>
Hello,

I was wondering if there were any plans to upgrade the portable
syntax-case in SISC from version 6.9 to the latest, 7.1?

It doesn't seem exactly trivial, but it would be very useful.

I was looking at the differences between SISC's version and the
canonical 6.9 to identify the type of changes, but I can't say I
understand them all. At any rate, I'm appending the list of
differences I noted down, in case they turn useful to porting 7.1.

--8<----8<----8<----8<----8<----8<----8<--
01. moved self-evaluating? inside let(), and (null? x) test is and-ed
to (strict-r5rs-compliance)
02. (when (not test) ...) => (if test #!void ...)
03. "noexpand" => "analyzeonly"
04. removed annotation? predicate definition
05. replaced generate-id definition with generate-module-id
06. use of #%annotate and #%forms in output constructors
07. build sequence skips front voids in its argument list
08. adds define-syntax var?
09. adds define-syntax valid-bound-vars?
10. defines core-quote, core-if, core-lambda, core-letrec differently
11. in syntax-type, a if is turned into cond and the clause
(syntactic-token? first) added
12. a little indirection in chi-top, clause (define-form) to "make
sure compile-time definitions occur before we expand the run-time
code"
13. in chi-top-module, a module-id variable is introduced, but never used (?)
14. in chi-top-module the initial value of fexports in the partition
loop is set to (map (lambda (x) (cons x '())) fexports)
15. in chi-top-module generate-id is turned into generate-module-id
16. later in chi-top-module the fexports list is processed slightly differently
17. in chi-macro, rip is consed to (cdr s) for some reason
18. in parse-define the previously defined var? is used in place of id?
19. in chi-lambda-clause valid-bound-vars? is used in place of valid-bound-ids?
20. in chi-void build-data is used instead of build-application
21. in strip-annotation an extra check is made on the x argument if
the future car is immutable-pair? or immutable-vector?, or a box?
22. in strip, we don't care to check that x or (car x) is an annotation
23. the previously-defined  core-quote, etc. are used with-global extend
24. (map [car|cdr] lst) is turned into (map-[car|cdr] lst)
25. plugs a custom implementation of sc-expand
26. in (define-syntax cond), (syntax (begin ...)) is turned into
(syntax (if '#t (begin ....))
27. in (define-syntax do), (if (not e0) ...) is turned into (if e0 #!void ...)
28. in (define-syntax quasiquote), quasicons accepts an extra
(defineargument + something funky happens + an extra vquasi case is
added
29. in (define-syntax include), open-input-file is turned into
open-source-input-file + an acc is used
30. in (define-syntax case) a couple of extra patterns are added
--8<----8<----8<----8<----8<----8<----8<--
___
Alessandro

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV