1

私はスキームを学んでいます。Gimp 用のscript-fuフィルターを作成したいので、 tinyschemeを使用して作成したスクリプトを実行していましたが、tinyschemeの関数セットは非常に限られているようmaxで、 、min、 などの関数even?が欠落しています。(誰かにここで私が間違っていることを証明してもらいたい:( )

わかりました、実際には、scheme48 で Scheme スクリプトを実行したいだけです。それ、どうやったら出来るの?

たとえば、次のファイルをscheme48で実行するにはどうすればよいですか?

(define (addx inNum inX)
  (if (> (* inNum inX) 999) 0
      (+ (* inNum inX) (addx inNum (+ 1 inX)))))

(display 
  (- (+ (addx 3 1) (addx 5 1)) (addx 15 1)))
4

1 に答える 1

4

また、scheme48 を使用してスキーム スクリプトを正常に実行することもできませんでした (マニュアルにはまだヒントが見つかりませんでした)。代わりに Guile を使用することもできます (Linux などで作業していると仮定します):

#!/usr/local/bin/guile -s
!#

(define (addx in-num in-x)
  (if (>  (* in-num in-x) 999)
      0
      (+ (* in-num in-x) (addx in-num (+ 1 in-x)))))

(display (- (+ (addx 3 1) (addx 5 1)) (addx 15 1)))
(newline)

保存してから実行します。

$chmod u+x test.scm
./test.scm 
233168
$

(ちなみに、Scheme を C のようにフォーマットしないでください)。

編集

Scheme48 メーリング リストでの Mike Sperber の投稿によると、shebanging は機能しません。明示的に Scheme48 を呼び出すには、次のようにします。

#!/bin/bash
scheme48 -a batch << EOF
(letrec ((fac (lambda (n)
             (if (= n 1)
                 1
                 (* n (fac (- n 1)))))))
 (fac 5))
EOF

$ ./test.scm
120
于 2013-01-02T18:13:07.027 に答える