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