ぱたへね

はてなダイアリーはrustの色分けができないのでこっちに来た

Scheme処理系毎に処理を分ける

Chaton Gaucheで教わった、実行しているScheme処理系によって分岐をする方法です。

srfi-0で定められているcond-expandを使います。使い方の例ですが、hello.scmにこのように記述します。

(cond-expand (gauche  (display 'Hello-Gauche))
             (guile   (display 'Hello-Guile))
             (chicken (display 'Hello-Chicken)))

Gaucheでこのスクリプトを実行するとHello-Gaucheが、Guileで実行するとHello-Guileが、Chicken Schemeで実行するとHello-Chickenが表示されます。

YUKI.N> gosh hello.scm
Hello-Gauche
Natsutani@Natsutani-PC ~/tmp/scheme
YUKI.N> guile hello.scm
Hello-Guile
Natsutani@Natsutani-PC ~/tmp/scheme
YUKI.N> csi hello.scm -q -b
Hello-Chicken
Natsutani@Natsutani-PC ~/tmp/scheme

ただ全てのScheme処理系で使えるわけではありません。そもそもsrfiの呼び出し方が処理系依存なので、処理系が起動した時点でsrfi-0をサポートしている必要があります。