Gauche:scmxlate
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