上手く行かないようです。名案のある方がいらっしゃればお願いします。 何度もすみません。
Guile だと (environ) で全部出るけど、SCM は知らん。
>>952 #\newline で split すればいいじゃん
>>946 是非作ってみたいんだけど、Gauche に curses とか readline みたいな
ライブラリってあったっけ? slib にならあるかな。
>>956 Guile だとこんな感じかな。もっと良いの書けそうだけど。
(map (lambda (str)
(call-with-input-string str
(lambda (port)
(let* ((key (read-delimited "=" port))
(val (read-delimited "" port)))
(cons key val)))))
(environ))
958 :
デフォルトの名無しさん :02/03/14 09:03
959 :
デフォルトの名無しさん :02/03/14 12:16
scheme を使った階乗の計算で、 (define fact (lambda (n) (if (= n 0) 1 (* (fact (- n 1)) n)))) は末尾再帰を使うと (define fact-tail (lambda (n x) (if (= n 0) x (fact-tail (- n 1) (* n x))))) のようになるらしいのですが、どのように考えたら下の式のようなものが書け るようになりますか? 末尾再帰って禿げしく便利そうだということをよく見かけますが、実際に自分 では書けそうな気がしません。 ;; 末尾再帰が「引数つき goto」っていうのも、再帰と goto がどう結びつく ;; のかよくわからないんですが。
>>957 ありがとうございます。
求めていたものが得られました。
これからも精進します。
|Д`) |⊂ ダレモイナイオドルナライマノウチ | Å ♪ / \ ♪ ヽ(´Д`;)ノ ランタ ランタ ( ヘ) ランタ タン く ランタ タンタ タン Å ♪ / \ ヽ(;´Д`)ノ ランタ ランタ ♪ (へ ) ランタ タン > ランタ タンタ タン
964 :
デフォルトの名無しさん :02/03/14 21:26
mit scheme で cmu-scheme.el でなく xscheme.el 使えば emacs の lisp-interaction-mode に近くなるよ。 あと mit scheme だけでできてる emacs like editor も 面白いかも。elisp と scheme が入れかわったような感じ。 emacs ほどボリュームはないけど拡張性は同じくらいある。
965 :
デフォルトの名無しさん :02/03/14 23:39
guile-1.7.0 を使っているのですが、readline を使おうとしたら guile> (use-modules (ice-9 readline)) ERROR: In procedure dynamic-link: ERROR: file: "libguilereadline", message: "file not found" ABORT: (misc-error) となってしまいます。/usr/local/lib の下に libguilereadline.a や .so な どのファイルがあるのですが、何か設定しなければならないのでしょうか。 Info にはとくに何も書いていないのですが。
966 :
デフォルトの名無しさん :02/03/14 23:49
>>955 vimにschemeを組み込むってアプローチもあると思う。
vim-perl - Vi IMproved - with perl support
vim-python - Vi IMproved - with python support
vim-tcl - Vi IMproved - with tcl support
好きな言語ないから素のvim script使ってるけど、schemeがあれば使う。
>>347 に regex と readline が必要だったって書いてありますね。
readline は rpm で入ってたけど regex がなかったので、
regex-0.12.tar.gz 入れたけどやっぱりだめだ。。。
>>965 まずエラーの原因を特定する。メッセージのとおりなのか、それとも誤報なのか
コード公開されてんだからわかるっしょ。デバッガもあるし、
truss/strace/ltrace系のツール使ってもわかるだろうし。
メッセージのとおりの原因だったら何でダイナミックリンク失敗するか考えてみ。
ld.so.confとか確認したか?
そろそろ次スレを立てれよ
970 :
デフォルトの名無しさん :02/03/15 01:26
現実問題として、vi-schemeなんかがんばって作っても使う人いないと思う。 ただでさえviなんだからさ(w
>>968 エラーの原因ですか、、
strace と ltrace というのを今初めて使って調べてみましたが何だかよくわ
からないです。
とりあえず分かる範囲で、/etc/ld.so.conf に /usr/local/lib と
/usr/local/include/libguile を追加して /slib/ldconfig してみましたが状
況は変わりませんでした。続きはまた明日調べてみます。
偏見で申し訳ないが、vi ユーザに Lisp/Scheme は合わない。 閉じ括弧だけの行を作ったり、タブ文字でインデントするような 人達だから。Haskell でも使ってなさい。
>>965 =967=971
ldd -V guileしてみ
>>974 レスありがとうございます。でも新しい問題が発生しました。
$ ldd -V guile
ldd: unrecognized option `-V'
Try `ldd --help' for more information.
となってしまいます。man ldd には確かに -V オプションの説明があるのですが。
$ ldd --help
Usage: ldd [OPTION]... FILE...
--help print this help and exit
--version print version information and exit
-d, --data-relocs process data relocations
-r, --function-relocs process data and function relocations
-v, --verbose print all information
Report bugs using the `glibcbug' script to <
[email protected] >
となっています。ldd なんていじってないのになぁ。man とバージョンが違う
なんてことはないですよねぇ。OS は Redhat7.2 です。
;; 板違いになってしまってすみません。
977 :
デフォルトの名無しさん :02/03/15 03:19
>>976 あのさ、
>>965 のエラーって、
ld.soじゃなくて、guileがlibdlを使って、(dlopen(3)ね)
moduleが必要になったときにやるdynamic linkingだよ。
libguilereadline.so*があるか、
あるならdynamic-linkが使うpathがあってるか調べなよ。
readline.scm:
(dynamic-call "scm_init_readline" (dynamic-link "libguilereadline.so"))
こういうことになってるから。
In guile-1.4 you could just type into a repl: (use-modules (ice-9 readline)) (activate-readline) This doesn't work in guile-1.5.x out of the box because the default curent module for the repl is now (guile-user). The workaround is to place in your .guile file: (define-module (guile-user)) See NEWS for more info. もしかして、1.7 では使えないってことでしょうか。 今 windwos2000 + cygwin + guile-1.5.4 なんですが、同じエラーが出ます。 cygwin だからだめなんだと思って昨日はあきらめてたんですが。 LD_LIBRARY_PATH=/usr/local/lib と libguilereadline.a と libguilereadline.la がある場所を指定してみた んですがこれは関係ないようですね...
あ、guile 関係のファイルを一回全部消してからインストールやりなおした ら readline 使えるようになった。よかったぁ。
>>978 cygwin では "guile" コマンドの make 時に libguilereadline.a
を一緒にリンクしてしまえば readline が使えるようになるよ。
981 :
デフォルトの名無しさん :02/03/16 01:45
Gauche でシェルのコマンドを実行するのは (sys-system "command")
でできるのね。
>>973 tput 等使ってムフフなスクリプトを書いていますよん。
そろそろ次スレだね
age
>984 次スレあるのに。 あまのじゃくさん?
;; あまりに低レベルなのでこっちに。 nil でなければ t にするのに適当なのありますか? (not (null hoge)) ってのはチトカコワルイ
>>986 nilでなければtにするのがnotだと思うんですけど……。
ifの代わりならunless、とか?
∧_∧ ( ・∀・) ニヤニヤ ( 1000 ) | | | (__)_)
コソーリ
マターリ
ヒソーリ
コソーリ
マターリ
ヒソーリ
コソーリ
(・∀・)アト4!!
∀・)アト3!!
・)アト2!!
サッ )彡
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ Λ_Λ < コソーリ (´∀` ) \__________ ∧ ∧ (___,,)_ (.,゚Д゚)/ ̄ ̄ ̄ ̄ /| │ /∧ ∧ //|| (/___( ,,) _// / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ || ,,/ つ ||/ < 1000!! || (__丿 || \__________
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。