Dorai Shitaram氏による、Scheme/Lisp処理系間のポーティングツール。
http://www.ccs.neu.edu/home/dorai/scmxlate/scmxlate.html
Scmxlateは、パッケージの処理系依存の部分を別に記述しておくことにより、 ポータブルなSchemeパッケージを書けるようにするプログラム。
tex2page等に使われている(Gauche:tex2page参照)。
(2008/04/24 18:10:12 PDT:追記) インストール方法
% wget http://www.ccs.neu.edu/home/dorai/scmxlate/scmxlate.tar.gz % sudo tar zxvfC scmxlate.tar.gz `gauche-config --sitelibdir`
2003/5/31版から、Gaucheがデフォルトで認識されるようになった。
以下のパッチは古い版に対するものだが、記録のために残しておく。
Gaucheで使うには、scmxlate version 1a1 に次のパッチを当てる。
diff -crN scmxlate/scmxlate.scm scmxlate.new/scmxlate.scm *** scmxlate/scmxlate.scm Sat Nov 30 04:43:13 2002 --- scmxlate.new/scmxlate.scm Sun Dec 1 02:03:52 2002 *************** *** 181,187 **** (define exists-file? (case *dialect* ((bigloo chez gambit guile kawa mitscheme mzscheme petite plt scm scsh stk ! stklos sxm umbscheme) file-exists?) ((scheme48) (lambda (f) --- 181,187 ---- (define exists-file? (case *dialect* ((bigloo chez gambit guile kawa mitscheme mzscheme petite plt scm scsh stk ! stklos sxm umbscheme gauche) file-exists?) ((scheme48) (lambda (f) *************** *** 207,212 **** --- 207,213 ---- (lambda (f) ((eval (call-with-input-string "##shell-command" read)) (string-append "rm " f)))) + ((gauche) sys-unlink) (else (lambda (f) #t)))) (define ensure-file-deleted *************** *** 253,258 **** --- 254,262 ---- (else 'unix))) ((pscheme) 'windows) ((umbscheme) 'unix) + ((gauche) (if (rxmatch (string->regexp "cygwin") (gauche-architecture)) + 'windows + 'unix)) (else (display "What is your operating system? (") (let ((first? #t)) *************** *** 300,306 **** (lambda (e) (eval e (interaction-environment))) eval)) ((mitscheme) (lambda (e) (eval e user-initial-environment))) ! ((scsh) (lambda (e) (eval e (interaction-environment)))) (else eval))) ;get "system" for PLT Scheme --- 304,310 ---- (lambda (e) (eval e (interaction-environment))) eval)) ((mitscheme) (lambda (e) (eval e user-initial-environment))) ! ((scsh gauche) (lambda (e) (eval e (interaction-environment)))) (else eval))) ;get "system" for PLT Scheme *************** *** 509,515 **** (let ((datum->syntax-object (lambda (x y) y)) (syntax-object->datum (lambda (x) x))) (,(caddr e) __form)))))) ! ((gambit guile bigloo pscheme) (lambda (e) (let ((e-t `(define-macro ,(cadr e) (lambda _args --- 513,519 ---- (let ((datum->syntax-object (lambda (x y) y)) (syntax-object->datum (lambda (x) x))) (,(caddr e) __form)))))) ! ((gambit guile bigloo pscheme gauche) (lambda (e) (let ((e-t `(define-macro ,(cadr e) (lambda _args *************** *** 729,734 **** --- 733,739 ---- (close-input-port i) e) (interaction-environment))) + ((gauche) (sys-system chmod-cmd)) (else (display "Do") (newline) (display " ") (display chmod-cmd) (newline))))))) *************** *** 763,768 **** --- 768,777 ---- '((flush-output . force-output) (get-output-string . string-output-port-output) (open-output-string . make-string-output-port))) + ((gauche) + '((flush-output . flush) + (getenv . sys-getenv) + (system . sys-system))) (else '()))) 'eval-in-cl-also *************** *** 879,885 **** (case *dialect* ((bigloo chez gambit guile kawa mzscheme petite plt pscheme ! scsh stk stklos sxm) (exit)) ((mitscheme) (%exit)) ((scm) (quit)) (else (display "You may exit Scheme now!") --- 888,894 ---- (case *dialect* ((bigloo chez gambit guile kawa mzscheme petite plt pscheme ! scsh stk stklos sxm gauche) (exit)) ((mitscheme) (%exit)) ((scm) (quit)) (else (display "You may exit Scheme now!")
Tag: scmxlate