編集可能
2012年4月3日

Gaucheスクリプトとload-path

Gaucheでファイル単位で分割したmoduleをuseするお作法?
6
りぶらっちー @cryks

モジュールがまだちょっと微妙。もうちょっと勉強する。あと run-process は使ったら負けなので使わなかった。次は sys-opentty で仮想端末。

2012-04-03 18:12:35
りぶらっちー @cryks

Gauche で適当な機能ごとにモジュール分けするときはどんな方法がいいのかな。define-module / use だとカレントディレクトリ見てくれないから、(add-load-path ".") とかやっちゃってもいいのかしら。初期値に無いってことは作法に反している気がする

2012-04-03 21:20:20
Shiro Kawai @anohana

@cryks 「常にモジュールがあるディレクトリで起動する」とわかっているなら(add-load-path ".")して良いと思います。デフォルトで"."が入ってないのは、前述の仮定がほとんどのスクリプトでは成り立たないからです。

2012-04-03 21:27:25
垂金権造 @valvallow

汎用ライブラリっぽいものは(gauche-library-directory)とかに突っ込んだりするけど、適当な大きさのモジュール分ける時ってどうしたらいんだろう・・・

2012-04-03 21:28:21
りぶらっちー @cryks

@anohana なるほど。投稿した後に気づいたのですが、確かに別ディレクトリから起動すると成り立たないですね。うーむ、どうしたもんか…

2012-04-03 21:29:51
Shiro Kawai @anohana

@valvallow ファイル分割したいなら、そのファイルを実行時に探せないとならないので、gauche-site-library-directoryに入れるか、独自ディレクトリに入れてスクリプト内で適当にload-pathを設定するかですね。

2012-04-03 21:31:52
Shiro Kawai @anohana

@valvallow ファイル分割しなくていい(名前空間だけの問題)ならひとつのファイル内に複数のdefine-module書いて、必要に応じてimportすることもできますよ。

2012-04-03 21:32:50
りぶらっちー @cryks

スクリプトのディレクトリを *load-path* に突っ込んだところで、→のような問題がが。うーん。 http://t.co/PeqAvqOx

2012-04-03 21:35:06
Shiro Kawai @anohana

@cryks ファイルを分けたいのか、名前空間を分けたいのかでやり方がいくつかあると思います。ファイルを分けるならload-pathを何らかの方法で通す必要が。名前空間を分けるだけならファイル内にdefine-moduleをいくつも書くことはできます (利用にはimportを)

2012-04-03 21:36:57
齊藤敦志 @SaitoAtsushi

@anohana @valvallow gosh のオプションや環境変数でもパスの追加はできるので、別にシェルスクリプトを用意しといてそこから gauche スクリプトを起動するようにすればパスの設定はシェルスクリプトに追い出せますね。

2012-04-03 21:38:12
Shiro Kawai @anohana

@SaitoAtsushi @valvallow はい。gaucheスクリプト自体にパスを埋め込んでしまうのは (configure+makeでスクリプトを書き換えるというメカニズムを併用しないなら) あまり筋が良くないかと。

2012-04-03 21:39:56
りぶらっちー @cryks

@anohana 目的はファイル分割ですねー。 @SaitoAtsushi さんのシェルスクリプト用意の方法も良さそうなので、いろいろやってみます!

2012-04-03 21:40:19
垂金権造 @valvallow

@anohana なるほど。一ファイル内にdefine-moduleが複数書いてあるのはどこかのコードで見たことがあります。私が知りたかったのは「独自ディレクトリに入れてスクリプト内で適当にload-pathを設定する」の方でした。というよりその辺りの作法というか慣習というか。

2012-04-03 21:41:11
あはりす @aharisu

@cryks 僕もモジュールのロード周りはいつも迷います。makeの中や他コマンドから呼び出されることが前提なら、configure時に絶対パスを調べて、実行時にモジュールのパスをgoshの-Iオプションで渡すことが多いです。

2012-04-03 21:42:56
Shiro Kawai @anohana

@cryks @SaitoAtsushi ドキュメントされていませんが、(include <filename>)とすると、「その時点で読んでいるファイルからの相対パス」で<filename>を読み込むことができます。これはモジュールとは関係ないです。

2012-04-03 21:43:45
あはりす @aharisu

なんにしても、現状Gaucheのモジュールロード周りは一段高いレベルでどうにかするしかない感じが、あまり好きじゃない。

2012-04-03 21:44:09
りぶらっちー @cryks

@aharisu みんな結構悩んでいるポイントなんですねー…

2012-04-03 21:44:37
垂金権造 @valvallow

一斉に置き換えるってのは、wilikiか何かで見かけた気がする

2012-04-03 21:44:42
Shiro Kawai @anohana

@valvallow 私は、独自ディレクトリに入れるならどうせmake installするんだからmakeでパスを埋め込んじゃえばいいよ派です。インストール前のテストについてはgosh -I. すればいいですし。

2012-04-03 21:46:08
垂金権造 @valvallow

そうかgauche-library-directoryだけじゃなくてgauche-site-library-directoryもあるのか

2012-04-03 21:47:20
齊藤敦志 @SaitoAtsushi

@anohana @cryks include は単にファイルをそこに挿入したかのように扱うということでしょうか。 R7RS 風機能の先取り?

2012-04-03 21:47:59
きくちゃん @kikuchan98

スクリプト自体のファイル名とる方法ってあるんだっけ? #gauche

2012-04-03 21:48:06
残りを読む(76)

コメント

垂金権造 @valvallow 2012年4月3日
まとめを更新しました。
0