トップページtech
1001コメント272KB

((Common Lisp) (Scheme) :Part 15)

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2006/06/23(金) 10:22:53
過去スレ
Part14: http://pc8.2ch.net/test/read.cgi/tech/1132275726/
Part13: http://pc8.2ch.net/test/read.cgi/tech/1115901841/
Part12: http://pc8.2ch.net/test/read.cgi/tech/1100229366/
Part11: http://pc5.2ch.net/test/read.cgi/tech/1091456033/
Part10: http://pc5.2ch.net/test/read.cgi/tech/1075630259/
Part9: http://pc2.2ch.net/test/read.cgi/tech/1069594582/
Part8: http://pc5.2ch.net/tech/kako/1058/10582/1058263391.html
Part7: http://pc5.2ch.net/tech/kako/1042/10421/1042167213.html
Part6: http://pc3.2ch.net/tech/kako/1031/10315/1031560687.html
Part5: http://pc3.2ch.net/tech/kako/1023/10230/1023091882.html
Part4: http://pc.2ch.net/tech/kako/1016/10162/1016211619.html
Part3: http://pc.2ch.net/tech/kako/1008/10082/1008220265.html
Part2: http://pc.2ch.net/tech/kako/1002/10025/1002584344.html
Part1: http://piza2.2ch.net/tech/kako/987/987169286.html
0153デフォルトの名無しさん2006/08/03(木) 00:23:14
にるぽ
0154デフォルトの名無しさん2006/08/03(木) 00:46:53
かー
0155デフォルトの名無しさん2006/08/03(木) 01:26:29
>>152
いまいちやりたいことがわからんが・・・
scheme-report-environmentはR5RSで定義されてるバインドだけ持った環境を返すだけで
返してきた環境の中に新たにバインドつくるとかはできないんだぜ?
0156デフォルトの名無しさん2006/08/03(木) 07:46:45
いや、それがやりたいんだと思うよ。
R5RSに出来ないと書いてあるのにできちゃうevalってのも不親切といえば
不親切ではあるかも知れない(が、エラーにしちゃうとそれも不便だろうな)。

R5RSより:
 -- procedure: eval expression environment-specifier
     Evaluates EXPRESSION in the specified environment and returns its
     value. EXPRESSION must be a valid Scheme expression represented
     as data, and ENVIRONMENT-SPECIFIER must be a value returned by one
     of the three procedures described below. Implementations may
     extend `eval' to allow non-expression programs (definitions) as
     the first argument and to allow other values as environments, with
     the restriction that `eval' is not allowed to create new bindings
     in the environments associated with `null-environment' or
     `scheme-report-environment'.
0157デフォルトの名無しさん2006/08/04(金) 03:18:49
LispWorks5.0出荷されてますね。
http://www.lispworks.com/news/news19.html
0158デフォルトの名無しさん2006/08/04(金) 22:05:05
>>144
なにかと思ったら LTK 動かすためなんじゃね?入門を目指すならいいん
じゃないかな。むしろ「GUI もできます… Tcl/Tk を入れれば」は初心者
には引かれるだろ。よく言われる

- フリー
- ANSI Common Lisp (MOP, Gray Stream などデファクトスタンダード含む)
- Windows 用
- .exe が作れる
- GUI がつかえる

は満せつつあるんだねー。でもドキュメントが足りない気がする。
0159デフォルトの名無しさん2006/08/05(土) 05:32:30
R5RSって「あーるごあーるえす」って読むの?
0160デフォルトの名無しさん2006/08/05(土) 07:48:41
うん。
0161デフォルトの名無しさん2006/08/05(土) 22:50:40
>>158
Tkは解るけど、Tclっているのん?
0162デフォルトの名無しさん2006/08/06(日) 00:28:18
Tkは言語中立なGUIツールキットなんかじゃないよ。
0163デフォルトの名無しさん2006/08/06(日) 00:35:21
>>161
Tk needs Tcl.
0164・∀・)っ-○◎●新世紀ダンゴリオン ◆DanGorION6 2006/08/06(日) 00:40:49
Perl/TkやRuby/Tkが流行る当たり、Tclの言語としての駄目さ加減がわかるな。
0165デフォルトの名無しさん2006/08/06(日) 12:42:45
ここで Tcl を叩くのはスレ違いだと思うが…。

Ruby/Tk も Tcl 要るよ?Python の Tkinter も Tcl 要るし。名前の印象にダ
マされてる? Perl/Tk だけが自力で Tk とのバインディングを持ってる。
0166デフォルトの名無しさん2006/08/06(日) 13:23:13
でもTclが嫌いでTcl/Tkを避ける奴は多いと思う
実際には他言語のバインド使うならほとんどTclの知識は要らないんだけどね
0167デフォルトの名無しさん2006/08/06(日) 14:11:35
最近 Lisp はじめたんですけど,Perl/Tk みたいに結局インターフェースは
Tcl っぽくなってしまうような気がしますね。Perl/Tk は流行してないと思い
ますが…最近あまり動きないですし。
0168デフォルトの名無しさん2006/08/06(日) 14:48:50
Tclは一つの言語というより、可搬式コマンドラインツールセットというべきかと。
比較対象としてはPerlやRubyより、Dosemuやcygwinに近い
0169デフォルトの名無しさん2006/08/06(日) 14:55:54
tclはシェルの一種だよ。
0170デフォルトの名無しさん2006/08/06(日) 20:10:45
歴史長い割に普及してないね。
やっぱUNIXのGUIってセンスがダメなのよね。
0171デフォルトの名無しさん2006/08/06(日) 21:19:27
・・・え?
0172デフォルトの名無しさん2006/08/07(月) 01:38:00
UNIXのGUI(笑)
0173・∀・)っ-○◎●新世紀ダンゴリオン ◆DanGorION6 2006/08/07(月) 01:41:17
QtやGtkのバインディングってないの?
0174デフォルトの名無しさん2006/08/08(火) 23:13:00
ググるという行為を知らんのかね?
http://www.cliki.net/Graphics%20Toolkit
0175デフォルトの名無しさん2006/08/09(水) 01:14:49
ググらせるという行為を知らんのかね?
0176デフォルトの名無しさん2006/08/09(水) 01:17:41
知らん
0177デフォルトの名無しさん2006/08/16(水) 00:43:19
Schemeのわかりやすい、楽しい本ってなんでないの?
0178デフォルトの名無しさん2006/08/16(水) 00:45:26
>>177
君が何を読んでも楽しさを感じられない人間だからだと思う
0179デフォルトの名無しさん2006/08/16(水) 00:49:17
>>178
お前の家族を明日殺す
0180デフォルトの名無しさん2006/08/16(水) 00:51:31
キタ━━━(´・ω・`)━━━・・・
0181デフォルトの名無しさん2006/08/16(水) 02:47:33
>>179
一応警察に通報しておく
0182デフォルトの名無しさん2006/08/16(水) 09:16:43
>>177
Little Schemerかのう・・・軽く読めるんけど、楽しいかというとびみょ
0183デフォルトの名無しさん2006/08/16(水) 20:16:06
EoPL第2版がおすすめだ。
0184デフォルトの名無しさん2006/08/16(水) 22:31:52
「リスト遊び」をschemeに翻訳するとか。
最近俺がやってる遊びだが。
0185デフォルトの名無しさん2006/08/17(木) 17:11:50
院試でSchemeの問題が…

orz
0186デフォルトの名無しさん2006/08/17(木) 18:09:51
それは喜ぶところじゃないのか
0187デフォルトの名無しさん2006/08/17(木) 18:17:43
うーん。普段Schemeのプログラムはちょっとは書いてるつもりだったし、最初の
小問はかなり簡単だったんで喜んだんだけど… 再帰の計算量(?)を求める
問題とsamefringeが難しかった…
0188デフォルトの名無しさん2006/08/17(木) 21:39:36
samefringeを出題するおちゃめな大学があるのか…
0189デフォルトの名無しさん2006/08/18(金) 17:36:24
flattenしてequal?で調べるではやっぱり駄目?
0190デフォルトの名無しさん2006/08/18(金) 18:31:56
どんな問題なんだろう。call/ccでコルーチン作るやつかな?
そんなの院試に出されたら死屍累々という気もするが。
0191デフォルトの名無しさん2006/08/18(金) 18:50:28
>>190
試しに書いたらhaskellで楽勝だったのに
Schemeで大失敗したorz

0192デフォルトの名無しさん2006/08/18(金) 20:48:44
Haskellだとどうやって書くの?
0193デフォルトの名無しさん2006/08/19(土) 02:39:27
ググッたらめっけた

data Tree a = Leaf a | Node [Tree a]
fringe (Leaf x) = [x]
fringe (Node x) = foldr (\x r -> fringe x ++ r) [] x

samefringe x y = fringe x == fringe y

でもツリー作るのマンドクサイ
(Node [(Node [(Leaf 1), (Leaf 2)]), (Node [(Leaf 3), (Node [(Leaf 4) ])])])
0194デフォルトの名無しさん2006/08/26(土) 15:32:15
SBCLのREPLから対話処理をするプログラムを実行したいんだけど、
例えば以下のようにすると、

(setf p (run-program "/usr/bin/dc" nil :pty t :wait nil))
(format (process-pty p) "2 3 *~%")
(terpri (process-pty p))
(format (process-pty p) "p~%")
(terpri (process-pty p))
(format t "~A" (read-line (process-pty p)))

6が表示されると思われるんだけど、実際には入力待ちになってしまうのはどうしてなぜ?
0195デフォルトの名無しさん2006/08/28(月) 00:42:24
読み込みでブロックするっつーことは stream が無効なわけじゃなさそうだね.
stream が buffering してんじゃない? dc ないから bc で試してみた.pty
使えない環境なんで :stream 経由で.環境は sbcl 0.9.16 です.

CL-USER> (defun bc-example ()
(let ((process (run-program "/usr/bin/bc" '("-q" "-i") :output :stream :input :stream :wait nil)))
(unwind-protect
(progn
(write-line "x = 2" (process-input process))
(write-line "y = 29" (process-input process))
(write-line "x^y-1" (process-input process))
(finish-output (process-input process)) ;; これがないとブロックする
(write-line (read-line (process-output process))))
(process-close process))))

BC-EXAMPLE
CL-USER> (bc-example)
536870911
"536870911"
0196デフォルトの名無しさん2006/08/28(月) 17:00:26
R5RSを読んでるんですが、
3.5節の末尾再帰のところに出てくる「アクタ(actor)」というのは
昔の歴史的な事柄で今のSchemeにはもう関係ない話だと思って良いですよね?
0197デフォルトの名無しさん2006/08/28(月) 21:58:26
Hewittせんせーい!
0198デフォルトの名無しさん2006/08/29(火) 21:17:32
scm5e1でscheme勉強しています。
> (let ((x 10)) (define x (+ x 1)))
とすると、

;ERROR: bad body ((define x (+ x 1)))
; in expression: (let ((x 10)) (define x (+ x 1)))
; in top level environment.
;STACK TRACE
1; (let ((x 10)) (define x (+ x 1)))
と怒られてしまうのですが、
これはなぜでしょうか。
letの中で外に影響を及ぼすdefineを使っているからですか?
0199デフォルトの名無しさん2006/08/29(火) 21:34:56
>>198
define で初期値として x を参照してるから。
(let ((x 10)) (define x (+ x 1)))
== (let ((x 10)) (letrec ((x (+ x 1)))))
んで、R5RS 4.2.2 Binding constructs
> library syntax: (letrec <bindings> <body>)
> Syntax: <Bindings> should have the form
> ((<variable1> <init1>) ...),
...
> One restriction on letrec is very important: it must be possible
> to evaluate each <init> without assigning or referring to the
> value of any <variable>.
02001982006/08/30(水) 07:05:34
>199
ありがとうございます。
defineの所の説明とあわせて読んだら分りました。

こんどは、letrecを試してみようと、
> (letrec ((x 2) (y 'x)) (eval y))
としたところ、

;ERROR: "/usr/local/lib/scm/Init5e1.scm": unbound variable: x
; in expression: (#@@eval (#@@copy-tree #@x))
; in scope:
; (x) procedure <anon>
; (@eval @copy-tree . #@let)
; defined by load: "/usr/local/lib/scm/Init5e1.scm"

;STACK TRACE
1; x
2; (#@letrec ((x 2) (y (#@quote x))) (#@eval #@y))
といわれてしまいます。

(define x 2)(define y 'x)(eval y)
なら2が帰って来てくれるのですが、
何がいけないのでしょうか。
letrecだと変数領域が割り当てられて、
それから初期値が算出される、と書いてあったので、
このやり方ならyは既に割り当てられたxをさすようになるだろうから、
正しく動くと思ったんですが...
0201デフォルトの名無しさん2006/08/30(水) 08:25:52
>>195
これでうまくいきました。cmuclでもちゃんと動くようです。ありがとうございました。
Schemeのflashのようなものでしょうか。改行すればフラッシュされるものと思いこんでました…orz
0202デフォルトの名無しさん2006/08/31(木) 02:33:39
>>200
eval は局所環境を参照しないんじゃないでしょうか。
0203デフォルトの名無しさん2006/08/31(木) 19:20:39
>>200
環境についてもうちょっと調べたほうがいい。
(eval y (current-environment))
で期待の動作をする処理系もあるけど、
トップレベルは言語の都合上、例外的な動作になる。
schemeの気持ち悪い所の1つ。

多分やりたい事のほとんどはマクロで済むし、
移植性も悪くなるから、schemeに慣れてくると
evalはあまり使わなくなる。
0204デフォルトの名無しさん2006/08/31(木) 23:15:07
きんもー
02051982006/09/01(金) 14:40:56
>202,203
ありがとうございます。
もう少し勉強しなおしてみます。
0206デフォルトの名無しさん2006/09/03(日) 14:23:09
http://www.comics.com/comics/workingdaze/archive/workingdaze-20060901.html
とほほ。
0207デフォルトの名無しさん2006/09/03(日) 16:32:11
物の喩えなのは重々承知しつつも
やはり1コマ目のシチュがあり得なすぎて入り込めん。
0208デフォルトの名無しさん2006/09/04(月) 03:19:44
入り込むもなにも
リスパーをばかにしてるだけじゃんw。
0209デフォルトの名無しさん2006/09/04(月) 06:55:22
キャラ紹介
ttp://www.comics.com/comics/workingdaze/html/cast_WorkingDaze.html
によると、
Roy, the engineer/repair guy:
an expert with computers and machines,
but he doesn't have a clue how to deal with people.
らしいから、
おにゃのこと言語オタクの区別が出来てないってことじゃなかろか。
0210デフォルトの名無しさん2006/09/04(月) 08:11:19
普通に考えればLISPを何に変えても成り立つ罠
0211デフォルトの名無しさん2006/09/04(月) 08:19:04
乳房の輪郭と (  ) の区別がつかなくなることはよくあること。
0212デフォルトの名無しさん2006/09/04(月) 13:55:59
>>207
ハゲデブメガネじゃなあ
0213デフォルトの名無しさん2006/09/04(月) 15:02:06
2コマ目の負け惜しみが悲しい…。
「LISPの価値の分からないようなやつとは、誰ともデートしたくなかったんだ」
ショボーン。
0214デフォルトの名無しさん2006/09/10(日) 22:19:48
>>213
違うだろ。LISPじゃなくて「LISP使える俺様」なのがpoint。

遅レスで悪いが。
0215デフォルトの名無しさん2006/09/12(火) 01:18:07
Scheme勉強している初心者です。
お世話になります。

先ほど、Biglooは.NETにも対応(?)しているということを知り、
インストールしてみました。
しかし、英語力がないためかマニュアル読んでも欲しい情報が得られませんでした・・・。
.NET Frameworkを使ってMessageBoxを表示するようなプログラムはどう書けばいいのでしょうか??(汗
ご存知の方いましたら教えてください。。。宜しくお願いします。
0216デフォルトの名無しさん2006/09/12(火) 22:29:54
.NET上のVM向けにコンパイルできるってだけじゃない?
0217デフォルトの名無しさん2006/09/13(水) 09:05:35
これってダンジョン自動生成のコード書くのに向いてます?
0218デフォルトの名無しさん2006/09/13(水) 12:39:59
向いています
0219デフォルトの名無しさん2006/09/13(水) 13:28:29
>>217 風来のシレン
>>217 乱数発生ライブラリー作ってくれ
0220デフォルトの名無しさん2006/09/13(水) 14:09:12
つくってくれってなんですか
もしかしてEMacsでローグ系が
プレイできたりします?
0221デフォルトの名無しさん2006/09/13(水) 14:22:59
します
02222192006/09/13(水) 22:07:09
>>217 風来のシレン
>>218 乱数発生ライブラリー作ってくれ

一文字違うと大変な事になるなぁ・・
ゴメン
0223デフォルトの名無しさん2006/09/14(木) 09:16:50
シレンは生成せず既製のダンジョンからランダムに抜いているだけですよ。
それとこっちに来てください。
http://pc8.2ch.net/test/read.cgi/gamedev/1027084016/
0224デフォルトの名無しさん2006/09/15(金) 08:20:17
ドラフト出ましたよ。
http://www.r6rs.org/
0225デフォルトの名無しさん2006/09/15(金) 09:05:05
正式版出るのって再来年くらい?待ちきれないYO
0226デフォルトの名無しさん2006/09/15(金) 11:30:41
待ってる間にHaskellに手を出してしまった俺は根性無し。
0227デフォルトの名無しさん2006/09/15(金) 12:12:31
やーい根性なし〜
0228デフォルトの名無しさん2006/09/17(日) 21:47:03
亀だが >>206 はあんまりだ。Lisper の地位を回復するため
わたしの体験を語ろう。

その頃のわたしにはコンピューター室が一番の居場所だった。
ノートPC用の電源。無線ネットワーク。他に何がいる?
銀色のノートPC がわたしの唯一の所有物だった。そして、
わたしには他には何もいらなかった(と信じていた)。

いまも鮮明に思い出せる。美しい黒髪、大きな瞳の優等生。
(つまり、「オタク」だったわたしには高嶺の花、だった。)
仮に t 子と呼ぼう。誰もいない夏休みのコンピューター室に、
ふいに彼女があらわれたのだ。

「君はずっとそこにいるの?」と彼女は言った。

-- それがわたしにとって、 Lisp という未知なる言語を学ぶ
きっかけだった。
02292282006/09/17(日) 22:01:00
彼女がどのような意図だったかは分からない。
ただ、わたしは赤面し、怒り、何か毒舌を吐いた気がする。
うるせえガキはどこかへ行け、とか何とか。

(実際には彼女は優等生なだけではなく大人で、下手をすると
それから何年もたったいまのわたしよりも大人びていた。)

ありがたいことに、彼女は床でノートPC と格闘していた
わたしに興味を持っていた。わたしはその頃趣味で
幾つかのプログラムを書いていた。発表する気もない、
自分だけのプログラム。書かずにはいられないプログラムだった。

彼女の質問は驚くほど鋭く
- その頃のわたしは C と Perl を使っていたが、
そのどちらも学校で習ったものではなかった -
彼女はわたしよりも C を、あるいはノイマン型コンピューターを
熟知していたのだと思う。そのことはすぐに分かった。

いつしかわたしはまるで「オタク」を相手にするように、
自然に彼女と会話をしていた、その事に気付いて、唐突に沈黙した。

(調子にのるな、こんな美少女とお前は話をする
資格なんかないんだ geek が、とこころの中で誰かが非難していた)
0230デフォルトの名無しさん2006/09/17(日) 23:49:33
いくらリロードしても誰もワッフルとか書かないから諦めろ。
0231デフォルトの名無しさん2006/09/18(月) 00:03:48
ttps://www.cbook24.com/bm_detail.asp?sku=4839920818
0232デフォルトの名無しさん2006/09/18(月) 02:11:31
>>231
意味もなく生物のイラストが表紙になるのはやはりラクダのせいかねぇ。
0233デフォルトの名無しさん2006/09/18(月) 02:41:38
表紙解説
Common LispはEmacsじゃないから野牛は使えません。
そこでインタプリタ型bisonことawk(海鳥)に目を付けたが
Common Lispは手続き型じゃないからaukは使えません。
そこで海鳥じゃなくて水鳥に落ち着きました
0234デフォルトの名無しさん2006/09/18(月) 02:46:55
Lisp関係の本が増えるのは嬉しいけど、入門書以外も充実したらいいなと思うんだ
0235デフォルトの名無しさん2006/09/18(月) 03:24:37
>>233
作者さんですか? Lisp 書籍コレクターの血が騒ぐので買います。でももっと
特化した内容のも買いてください。まずは教材に使えそうな「自然言語処理編」
とか「統計編」とか「数値計算」とか〜

でも Common Lisp の本なのに SLIME がないのはちょっと残念…
0236デフォルトの名無しさん2006/09/18(月) 04:02:49
ぶしつけな質問だけど関数型プログラミングってメリットある?
代入式使わないとか。
0237デフォルトの名無しさん2006/09/18(月) 04:17:35
>>231
今時出すのにこの題材でCommon Lisp? と思ってしまうが、
xyzzy使ってとっつきやすく、ってことなのかな?
0238デフォルトの名無しさん2006/09/18(月) 04:18:48
>>236
マルチスレッドでアホみたいに悩むことが減る。
0239デフォルトの名無しさん2006/09/18(月) 04:32:30
それをいったら R6RS 直前に Scheme も微妙じゃね。PLT なら入門者にも受け
るか…とおもうが xyzzy には勝てないわな。あれは Lisper 以外も使いたがる
良いエディタです。

>>236
Lisp の場合は強制じゃなくて選択ですからね。メリットが実感できるまでは普
通に副作用使いまくればいいんじゃないでしょうか。
0240デフォルトの名無しさん2006/09/18(月) 07:07:45
残念ながらxyzzyはあまりに遅すぎる
0241デフォルトの名無しさん2006/09/18(月) 07:41:15
何と比較して?常駐秀丸と起動速度で勝負とかなら同意するけど…
0242デフォルトの名無しさん2006/09/18(月) 07:50:40
>>241
Lispの実行速度じゃないの。
0243デフォルトの名無しさん2006/09/18(月) 08:39:14
>>241
普通にキータイプのレスポンスが遅くね?
0244デフォルトの名無しさん2006/09/18(月) 09:32:45
>>231とか、この前本屋で手に取った
ttp://www.amazon.co.jp/gp/product/479733665X
とか、`関数型'って言うのが微妙にクローズアップされているような
気がする。

その言語を扱っている書籍の中で、過去に出版された物より…
くらいの意味だけど。

Haskellが話題になったから?
0245デフォルトの名無しさん2006/09/18(月) 11:37:22
>>234
野田さんのOn Lisp翻訳に期待。(まだー?w)
0246デフォルトの名無しさん2006/09/18(月) 14:22:46
>>245
On Lispの翻訳を見たときは、日本にもまだまだ優秀な学生さんが居ると感心していたが
urlを見ると東大の学生じゃねーか、東大だよ東大!!!

そりゃぁ、出来て当然。Orz
0247 ◆r6EONKKhcc 2006/09/18(月) 14:25:48
orz
0248デフォルトの名無しさん2006/09/18(月) 14:43:19
>>246
東大コンプレックス乙ww
0249デフォルトの名無しさん2006/09/18(月) 15:29:45
高卒は必ず噛み付くよね、こういう時。
0250デフォルトの名無しさん2006/09/18(月) 16:13:12
>>249
学歴コンプレックス乙ww
0251デフォルトの名無しさん2006/09/18(月) 16:49:00
>>250
高卒乙ww
0252デフォルトの名無しさん2006/09/18(月) 19:18:58
もうやめろ
■ このスレッドは過去ログ倉庫に格納されています