Gauche:scmxlate

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


Last modified : 2013/04/27 00:48:37 UTC