Gaucheでコマンドの実行時に文字列を標準入力として与え、その結果を得るためには

gaucheでコマンドの実行時に文字列を標準入力として与え、その結果を得るためには call-with-process-io を使う。

portをcloseするのがめんどくさい。*1
なぜdisplayをprintにすると動かなくなるかは不明。

>>(use gauche.process)
=>#<undef>
>>((lambda (cmd str) (call-with-process-io cmd (lambda (in out) (display str out)(close-output-port out)(port->string in)))) "nkf -wmB" "GyRCJDMkcyRLJEEkb0AkMyYbKEIK")
=>こんにちわ世界

gaucheのsystem該当の関数はprocess-output-&gt;stringと思ったがcall-with-input-processの方が良い - 計算機と戯れる日々では入力をあたえていなかった。


http://practical-scheme.net/wiliki/wiliki.cgi?c=s&key=Gauche%3a%e5%85%a5%e5%87%ba%e5%8a%9b%e3%83%9d%e3%83%bc%e3%83%88%e3%81%ae%e4%bd%bf%e3%81%84%e6%96%b9


4月1日なのに面白いジョーク浮かばない…

追記 2008/04/01 21:03:09:

Function: write obj &optional port
Function: display obj &optional port

[R5RS] オブジェクトobjの表示可能な表現を生成し、出力ポートに書き出します。 writeは可能な限り、objの標準的な外部表現を使い、 生成された出力がreadで再び読み込めるようにします。 displayはより人間にとって可読性の高い出力を生成します。

(中略)

Function: print expr …

expr … をdisplayを使って現在の出力ポートに表示し、 最後に改行を書き出します。

ちゃんとマニュアルよもうな>俺
いまいちGaucheのマニュアルって項目別にURLがふられていないし(http://.../...#print みたいに)、全文検索がないのでついつい引くのが億劫になってしまう。
自分でダウンロードして全文検索はするようにしたんだが元ページへのURLが…あ、そちらでそもそもindexはればいいのか。なんの為のクローラー(笑

ともかくありがとうございました。> id:SaitoAtsushi さん