gosh の組み込み関数、 apropos
と info
が大変便利なんだけれど、
info
を呼ぶと、参照するだけで
gosh> info
*** ERROR: Compile Error: Compile Error: cannot find "rfc/zlib" in ("/usr/local/share/gauche-0.9/site/lib" "/usr/local/share/gauche-0.9/0.9.3.3/lib" "/usr/local/share/gauche/site/lib" "/usr/local/share/gauche/0.9/lib")
"/usr/local/share/gauche-0.9/0.9.3.3/lib/text/info.scm":34:(define-module text.info (use srfi-1 ...
"/usr/local/share/gauche-0.9/0.9.3.3/lib/gauche/interactive/info.scm":34:(define-module gauche.interactive.in ...
このように出る。rfc/zlibというSchemeモジュールがないという。
今まで何度もgoshをいくつものマシンにインストールしてきて、
info
が使えるようになったのは一度だけで、
それも何故使えるようになったのか理解していなかった。
たまにはちゃんとエラーメッセージを読んで解決を試みよう。
configure
のメッセージchecking for makeinfo... no
gauche-refe.info.gz
を作るためにmakeinfo
が必要らしい
$ sudo apt-get install makeinfo
configure: WARNING: "Can't find zlib.h so I turned off using zlib; you may want to use --with-zlib=PATH."
zlibっていうSchemeモジュールがないって言うので、Scheme側の問題かと思ってたのだけれど、 そもそも共有ヘッダファイルがないので、生成されてなかったらしい。
sudo apt-get install zlib1g-dev
このパッケージ名は自分で見つけられなかったので Ubuntuで足りないファイルがどのパッケージにあるか調べる方法Add Starmacchayoshihiro503 を参照した。
gosh> info
#<closure info>
gosh> (info 'display)
6.22.8 Output
-------------
For the following procedures, the optional PORT argument must be an
output port, and when omitted, the current output port is assumed.
-- Function: write obj :optional port
-- Function: display obj :optional port
[R5RS] Produces a printable representation of an object OBJ to the
できた!
alias f='echo this is ef'
aliasは''でくくるなりしないといけなくて、中に'を含めるのにエスケープがちょっと今の眠たい頭じゃ無理そうなので関数として
gauche() {
rlwrap -pRED -b "'"'(){}[].,#@;|`"' -f ~/Dropbox/cympfh/.gosh_complements -q'"' -m gosh
}
aliasならば、名前と中からの呼び出しに同じ名前があっても、 関数とは違って、再帰呼び出しにはならない。 というわけで、上の関数は gosh
とは異なる名前にした。
補完のためのファイルには、存在する手続きの名前を列挙するのだけど、
http://d.hatena.ne.jp/rui314/20070604/p1 には、そのためのGauche用スクリプトがあった。
でも、私は、gosh REPLから
(apropos '||)
として、出力結果をコピペして、ちょっとだけ整形してやる手間を加えた。
/dots/gosh_complements.txt