#:g1: snow2の紹介

Posted 2014-11-09 15:00:00 GMT

(LISP Library 365参加エントリ)

 LISP Library 365 の314日目です。

snow2とはなにか

 snow2は、Seth Alves作の今や更新されなくなって久しいSnow(Scheme Now!)を参考にしたR7RSポータブルなパッケージマネージャーです。

パッケージ情報

パッケージ名snow2
プロジェクトサイトsethalves/snow2-client · GitHub

インストール方法

 上記プロジェクトのリポジトリからチェックアウトしてきてインストールします。
Sagittariusを例にすると、

$ make SCHEME=sagittarius install

でツールがインストールされます。

試してみる

 対応しているという処理系は、現在のところ、Chibi、Chicken、Foment、Gauche、Sagittariusとのことです。
よくあるパッケージマネージャーと同じような操作感ですが用意されているコマンドはこんな感じです。

$ snow2 -h
/usr/bin/X11/snow2 [arguments] <operation> '(library name)' ...
  <operation> can be one of: install uninstall list-depends search
  -r --repo <url>      Add to list of snow2 repositories.
  -s --symlink         Make symlinks to a repo's source files.
  -t --test            Install code needed to run tests.
  -v --verbose         Print more.
  -h --help            Print usage message.

Example: snow2 install '(snow hello)'

see https://github.com/sethalves/snow2-client#snow2-client

 試しに(snow hello)をインストールして、ライブラリをimportしてみます。
なお、ダウンロードされたライブラリは、snow2-clientのソースディレクトリに展開されるようですが、拡張子がsldなのでsldの拡張子を扱うように処理系に指示する必要があります。
この辺りのオプションは処理系毎に調べるのが面倒ですが、snow2-clientのクライアントのソースが参考になるかなと思います。)

$ snow2 install '(snow hello)'
$ sash -Lsnow2-client -S.sld
sash> (import (snow hello))
let it snow
314159265358979
#<unspecified>
sash> 

同様にGaucheだとこんな感じ。

gosh -r7 -Isnow2-client -e '(append! *load-suffixes* (list ".sld"))'
gosh[r7rs.user]> (import (snow hello))
let it snow
314159265358979
#<undef>
gosh[r7rs.user]> 

まとめ

 今回は、snow2を紹介してみました。
現状ドキュメントが少ないので各々の処理系が提供するパッケージマネージャーより使い勝手が良くはない感じですが、ポータブルなパッケージマネージャーとしてメジャーになると良いですね。

comments powered by Disqus