SRFI-22はSchemeスクリプトをUnix上で実行形式であるかのうようにして走らせるためのSRFIです(日本語難しいな・・・)。何を定義しているかといえば、スクリプトの先頭に現れた
#! /usr/local/bin/sash
のような形式のラインを無視することと、main
手続きの呼び出しです。具体的な例を見てみましょう。(この例では/usr/local/binにSagittariusがインストールされていることを前提としています。)
#! /usr/local/bin/sash (import (rnrs)) (define (main args) (display "hello world!") (newline))このスクリプトを仮に
srfi-22.scm
として保存し実行権を付与すれば、Unixライクなシェル上で以下のように実行することができます。
$ ./srfi-22.scmこのSRFIで重要になるのは、実は
#!
の部分だけで、それ以外は処理をトップレベルにおいてしまえば動きます。(R5RS時代にcommand-line
手続きがなかったのであればmain
の意味は大きいとは思いますが、R6RS以降であれば単なるショートカットくらいの意味しかないでしょう。)個人的にはもっともよく使っているSRFIの一つですが、割と賛否両論あるみたいです。
今回はSRFI-22を紹介しました。
2 comments:
Scheme的にmainという名前を特別扱いするのが気に入らない、って反対意見もわからんでもないですが、srfi-22形式だと「replにスクリプトを実行すること無くロードできる」ってメリットがわりと便利なんですよね。
確かにそんなメリットもありますね。REPL上でロードすることがあまりないので気づきませんでした。
Post a Comment