5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

LISP Scheme Part3

1 :デフォルトの名無しさん:01/12/13 14:11
過去スレ
Part1: http://piza2.2ch.net/tech/kako/987/987169286.html
Part2: http://pc.2ch.net/test/read.cgi/tech/1002584344/
Part2(過去ログ倉庫): http://pc.2ch.net/tech/kako/1002/1002584344.html

リンクは>>2-4に。

952 :947:02/03/13 21:42
上手く行かないようです。名案のある方がいらっしゃればお願いします。
何度もすみません。

953 :デフォルトの名無しさん:02/03/13 21:53
Guile だと (environ) で全部出るけど、SCM は知らん。



954 :デフォルトの名無しさん:02/03/14 00:09
>>952
#\newline で split すればいいじゃん

955 :デフォルトの名無しさん:02/03/14 01:10
>>946
是非作ってみたいんだけど、Gauche に curses とか readline みたいな
ライブラリってあったっけ? slib にならあるかな。


956 :947:02/03/14 01:52
>>964
あまりSchemeから出たくないですが、それしかないでしょうかね。。。

( ("TERM" . "kterm") ("PWD" . "home/hoge") ......)のように連想リストの形にしたい
と思っています。Guileも入れてみたので、こっちでも試してみます。

>>955
すでにご存じだと思いますがどうぞ。
http://tanaka-www.cs.titech.ac.jp/~euske/scm/oldindex.html

957 :953:02/03/14 02:03
>>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
>>955
描画部分はviから奪ってくればよし

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 がどう結びつく
;; のかよくわからないんですが。


960 :947:02/03/14 12:16
>>957
ありがとうございます。
求めていたものが得られました。
これからも精進します。

961 : :02/03/14 12:19
     |Д`)
     |⊂  ダレモイナイオドルナライマノウチ
     |     


           Å
       ♪ / \
     ♪  ヽ(´Д`;)ノ ランタ ランタ
         (  ヘ)   ランタ タン
          く     ランタ タンタ
                 タン

          Å
     ♪   / \
        ヽ(;´Д`)ノ ランタ ランタ
      ♪  (へ  )   ランタ タン
            >   ランタ タンタ
                 タン


962 :デフォルトの名無しさん:02/03/14 12:36
>>959
http://www.stdio.h.kyoto-u.ac.jp/~hioki/gairon-enshuu/SchemeNotes/recursive.html
これとか読んでわからなかったら死にましょう。

963 :デフォルトの名無しさん:02/03/14 18:11
http://www.ne.jp/asahi/haruyo/pocket/color/color.html
( ゚д゚)ポカーン


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があれば使う。

967 :デフォルトの名無しさん:02/03/15 00:26
>>347 に regex と readline が必要だったって書いてありますね。
readline は rpm で入ってたけど regex がなかったので、
regex-0.12.tar.gz 入れたけどやっぱりだめだ。。。

968 :デフォルトの名無しさん:02/03/15 01:00
>>965
まずエラーの原因を特定する。メッセージのとおりなのか、それとも誤報なのか
コード公開されてんだからわかるっしょ。デバッガもあるし、
truss/strace/ltrace系のツール使ってもわかるだろうし。
メッセージのとおりの原因だったら何でダイナミックリンク失敗するか考えてみ。
ld.so.confとか確認したか?

969 :デフォルトの名無しさん:02/03/15 01:19
そろそろ次スレを立てれよ

970 :デフォルトの名無しさん:02/03/15 01:26
現実問題として、vi-schemeなんかがんばって作っても使う人いないと思う。
ただでさえviなんだからさ(w


971 :965:02/03/15 01:43
>>968
エラーの原因ですか、、
strace と ltrace というのを今初めて使って調べてみましたが何だかよくわ
からないです。
とりあえず分かる範囲で、/etc/ld.so.conf に /usr/local/lib と
/usr/local/include/libguile を追加して /slib/ldconfig してみましたが状
況は変わりませんでした。続きはまた明日調べてみます。

972 :デフォルトの名無しさん:02/03/15 01:45
>>970
これでも歌ってれ!
http://www.gnu.org/fun/jokes/eternal-flame.html


973 :953:02/03/15 01:52
偏見で申し訳ないが、vi ユーザに Lisp/Scheme は合わない。
閉じ括弧だけの行を作ったり、タブ文字でインデントするような
人達だから。Haskell でも使ってなさい。


974 :デバッグスレにすんな:02/03/15 01:53
>>965=967=971
ldd -V guileしてみ

975 :vi-lisper なめんな:02/03/15 01:57
>>953
vi -l してみ

976 :965:02/03/15 02:22
>>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 <bugs@gnu.org>

となっています。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"))
こういうことになってるから。


978 :965:02/03/15 10:52
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 がある場所を指定してみた
んですがこれは関係ないようですね...


979 :965:02/03/15 23:22
あ、guile 関係のファイルを一回全部消してからインストールやりなおした
ら readline 使えるようになった。よかったぁ。

980 :デフォルトの名無しさん:02/03/16 01:09
>>978
cygwin では "guile" コマンドの make 時に libguilereadline.a
を一緒にリンクしてしまえば readline が使えるようになるよ。

981 :デフォルトの名無しさん:02/03/16 01:45
Gauche でシェルのコマンドを実行するのは (sys-system "command")
でできるのね。

>>973
tput 等使ってムフフなスクリプトを書いていますよん。


982 :デフォルトの名無しさん:02/03/16 01:51
そろそろ次スレだね

983 :デフォルトの名無しさん:02/03/16 02:07
いちおう、次スレです

LISP Scheme Part4
http://pc.2ch.net/test/read.cgi/tech/1016211619/

984 : :02/03/16 03:11
age

985 :デフォルトの名無しさん:02/03/16 03:23
>984
次スレあるのに。
あまのじゃくさん?

986 :デフォルトの名無しさん:02/03/16 03:41
;; あまりに低レベルなのでこっちに。
nil でなければ t にするのに適当なのありますか?
(not (null hoge)) ってのはチトカコワルイ


987 :デフォルトの名無しさん:02/03/16 04:58
>>986
nilでなければtにするのがnotだと思うんですけど……。
ifの代わりならunless、とか?

988 :デフォルトの名無しさん:02/03/19 13:11
  ∧_∧
 ( ・∀・) ニヤニヤ
 ( 1000 )
 | | |
 (__)_)

989 :デフォルトの名無しさん:02/03/19 13:11
コソーリ

990 :デフォルトの名無しさん:02/03/19 13:12
マターリ

991 :デフォルトの名無しさん:02/03/19 13:12
ヒソーリ

992 :デフォルトの名無しさん:02/03/19 13:12
コソーリ

993 :デフォルトの名無しさん:02/03/19 14:41
マターリ

994 :デフォルトの名無しさん:02/03/19 14:41
ヒソーリ

995 :デフォルトの名無しさん:02/03/19 14:41
コソーリ

996 :デフォルトの名無しさん:02/03/19 14:41
(・∀・)アト4!!

997 :デフォルトの名無しさん:02/03/19 14:41
∀・)アト3!!

998 :デフォルトの名無しさん:02/03/19 14:42
・)アト2!!

999 :デフォルトの名無しさん:02/03/19 14:42
 サッ
)彡

1000 :1000 ◆h.gHK9LE :02/03/19 14:42
                / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
         Λ_Λ <  コソーリ
        (´∀` )  \__________
  ∧ ∧   (___,,)_     
 (.,゚Д゚)/ ̄ ̄ ̄ ̄ /|     
 │ /∧ ∧    //||
 (/___(   ,,) _//  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ||  ,,/  つ ||/   <  1000!!
 ||  (__丿  ||      \__________

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

259 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.02 2018/11/22 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)