【SICP】計算機プログラムの構造と解釈【Scheme】
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
05/02/02 21:02:18SICP(英語)
http://mitpress.mit.edu/sicp/full-text/book/book.html
「計算機プログラムの構造と解釈」の原書です。
全てオンラインで読めます。
計算機プログラムの構造と解釈 第二版 (snip) に関連するホームページ
http://www.ipl.t.u-tokyo.ac.jp/sicp/
書籍情報(Amazon)
http://www.amazon.co.jp/exec/obidos/ASIN/489471163X/250-3648248-8159430
Lisp一般に関する話題は
CommonLisp Scheme Part12
http://pc5.2ch.net/test/read.cgi/tech/1100229366/l50
0153デフォルトの名無しさん
2005/09/16(金) 23:53:34結論から言えば可能。
例えばGaucheはgtkやOpenGLを呼ぶ機能が標準だったかオプションだったか
で備わってたと思う。
0154デフォルトの名無しさん
2005/09/17(土) 00:05:48留学生?
0155デフォルトの名無しさん
2005/09/17(土) 03:06:09図形言語機能付きの tustk の使い方
http://winnie.kuis.kyoto-u.ac.jp/~okuno/Lecture/04/IntroAlgDS/tustk-05.html
アルゴリズムとデータ構造入門
http://winnie.kuis.kyoto-u.ac.jp/~okuno/Lecture/04/IntroAlgDS/
0156デフォルトの名無しさん
2005/09/17(土) 17:04:45留学生ではないです。現役で普通の日本にある大学に通っています。
ごく普通の大学生です。大学に入るまではパソコン自体を触ったことが
なかったので、今は勉強中です。基礎中の基礎ですが。。。
んで、色んな言語があるのを知って触れている感じです。
ですが、PrologやJavaは結構知っている方です。たぶんですが。
MatlabとかPrologって変ですか?授業でたまたま触れたので勉強しました。
>>152さんと155さん
サンキューです、さっそく調べてみます。
今はMzSchemeやDrSchemeを使っているのですが、
Schemeを独学で勉強するのに処理系で左右されるモノなのでしょうか?
たくさんの処理系があり、適当にチョイスしてみたのです。
色んなサイトでGaucheを使っている方々が大勢いらっしゃいますが
そっちの方が有用なのですか?
初心者ながら申し訳ないですが、わかる人お願いします。
0157デフォルトの名無しさん
2005/09/17(土) 17:30:05どっちかというと怪しい処理系が多いんだけれども。
0158デフォルトの名無しさん
2005/09/17(土) 18:15:26ある意味引きこもりの自閉症気味な素のSchemeを、適度に妥協することで現実的な
問題を解決するための快適なプラットフォームに仕上げているところが利点だと思う。
Gaucheの話ね。
0159デフォルトの名無しさん
2005/09/18(日) 07:52:29どっかに転がってたりしませんか?
0160デフォルトの名無しさん
2005/09/18(日) 09:08:19ttp://mitpress.mit.edu/sicp/code/index.html
0161デフォルトの名無しさん
2005/09/18(日) 09:27:07ちゃんとあるんですね。
いつもブックマークした目次ページから見始めていたので思い至りませんでした。
0162デフォルトの名無しさん
2005/09/18(日) 10:47:050163デフォルトの名無しさん
2005/09/18(日) 12:22:120164デフォルトの名無しさん
2005/09/18(日) 12:52:380165デフォルトの名無しさん
2005/09/18(日) 13:56:07キーボードだとイマイチ効力が低い気もするけど、写経って大事な事なんだよね。
0166デフォルトの名無しさん
2005/09/18(日) 14:03:180167デフォルトの名無しさん
2005/09/19(月) 18:59:14私も現在、Schemeの勉強中でSICPも読んでいます。
私はグラフィック系というか、絵を簡易的なアニメーションさせたいなぁ
って思ってます。絵を回転させたりーてな感じかな?
Schemeって様々な機能を持っていますが、どこまでが限界なんですか???
わかる人います??
0168デフォルトの名無しさん
2005/09/19(月) 19:51:54グラフィックがどうとかはSICPに関係ないのでLisp/Schemeスレでどうぞ。
0169デフォルトの名無しさん
2005/09/19(月) 20:33:06CommonLisp Scheme Part13
http://pc8.2ch.net/test/read.cgi/tech/1115901841/
0170デフォルトの名無しさん
2005/09/23(金) 14:22:12何か読みやすいものはありません?
言語はC,C++,java辺りでお願いします。
一応、単純なLispくらいは読んだことがあるし、実装したこともあります。
0171デフォルトの名無しさん
2005/09/23(金) 14:25:26SCMあたりがシンプルで良いかも。
0172デフォルトの名無しさん
2005/09/23(金) 14:30:000173170
2005/09/23(金) 14:42:05継続の処理の仕方とマクロ周りです。
0174デフォルトの名無しさん
2005/09/28(水) 12:57:51継続はこれとかどうでしょうか?
ttp://www.jah.ne.jp/~naoyuki/Writings/VScheme3.html
0175デフォルトの名無しさん
2005/09/29(木) 00:32:19ここも良いかも
http://www.shiro.dreamhost.com/scheme/stack-j.html
0176デフォルトの名無しさん
2005/10/01(土) 21:55:10誰か買いません?
「EXPLORING COMPUTER WCIENCE WITH SCHEME」
ユーズドにしてはかなり綺麗な方だと思う¥5,000でお願い
http://www.amazon.co.jp/exec/obidos/ASIN/0387948953/qid%3D1127452213/250-5942737-7464260
0177デフォルトの名無しさん
2005/10/01(土) 23:54:450178デフォルトの名無しさん
2005/10/02(日) 15:00:570179デフォルトの名無しさん
2005/10/25(火) 22:24:040180デフォルトの名無しさん
2005/10/26(水) 00:09:450181179
2005/10/26(水) 23:18:55withdrawやdepositが同時に実行されないようにするための
function->serialized function の変換を呼出しのたびに行わずに
最初にletしておいたものを使いまわしても問題ないか?
0182デフォルトの名無しさん
2005/11/26(土) 08:39:23SICPの原著を買いました。今は、「ヘネパタ」の原著を読んでいますが、終わったらSICPに
取り組もうと思います。
学生時代、SchemeとTinyCLOSで研究して修士論文を書きました。最近、プログラミング
言語のアイデアとして試してみたいことがあって、超サブセットなSchemeをR5RSを見て
作ろうとしたのですが、C言語、C++そのものやSchemeの背景にある考え方が欠落して
いることに気づいて愕然としたため、SICPに取り組むことにしました。
よろしくお願いします。
0183デフォルトの名無しさん
2005/11/26(土) 09:11:41漏れも今Scheme処理系作ってる。syntax-rulesが結構めんどくさい。
0184デフォルトの名無しさん
2005/11/26(土) 10:57:40syntax-rulesの実装って時間の無駄って感じがしない?
define-macroはどうせ数行程度だし。
自分も処理系いくつか作ったけどHygienic Macro周りはいつも避けてる。
デバッグが楽になるわけでもなし。
0185デフォルトの名無しさん
2005/11/29(火) 08:55:27Syntactic Abstraction in Scheme
http://www.cs.indiana.edu/~dyb/pubs/LaSC-5-4-pp295-326.pdf
まあ、俺もこの形がベストなのかどうか良くわかんないんだが…
もっとすっきりしたプリミティブに分解できないものか。
0186愛也
2005/11/29(火) 15:36:400187愛也
2005/11/29(火) 15:45:56(1)
特定のデータを指定するにはアドレス信号を用いる。どれだけの信号が発行できるかはアドレスの本数による。
アドレスの本数が8本のときは( 1 )個、12本の時は( 2 )個のアドレスを発行する事ができる。
(2)
容量32KBのメモリがある、このメモリバイト単位でアドレスをつけた場合(アドレス幅は8ビット)、全アドレスを指定するには、最低( 3 )本のアドレスが必要である。
同時に256MBの場合は( 4 )本必要である。
上の問題をどなたかお時間がある方がいらっしゃれば教えていただけないでしょうかぁ??
何卒よろしくお願い致します。
0188愛也
2005/11/29(火) 15:50:44(1)
特定のデータを指定するにはアドレス信号を用いる。どれだけのアドレス信号が発行できるかはアドレスバスの本数による。
アドレスバスの本数が8本のときは( 1 )個、12本の時は( 2 )個のアドレスを発行する事ができる。
(2)
容量32KBのメモリがある、このメモリにバイト単位でアドレスをつけた場合(アドレス幅は8ビット)、全アドレスを指定するには、最低( 3 )本のアドレスバスが必要である。
同時に256MBの場合は( 4 )本必要である。
上の問題をどなたかお時間がある方がいらっしゃれば教えていただけないでしょうかぁ??
何卒よろしくお願い致します。
0189デフォルトの名無しさん
2005/11/29(火) 16:34:230190デフォルトの名無しさん
2005/11/29(火) 20:23:50いくらなんでもそれがわからないのはまずいだろ。
小学生時分でもわかるぞそれくらい。
で、大学生のくせにこんなこと2chで訊く以外に調べ方を知らないというのが
また泣ける。
0191デフォルトの名無しさん
2005/11/29(火) 21:38:280194デフォルトの名無しさん
2005/12/06(火) 03:32:08問題 3.17(152ページ)
リストを引数に取り、そのリストに含まれるペアの個数を数える手続き
count-pairs を定義せよ。 但し、教科書の問題3.16で定義された手続き
が正しく動かないことを考慮し、正しい手続きを考えること。
問題 3.22(156ページ)
キューを一対のポインタで表現する代わりに, 局所状態を持つ
手続きとして作ることが出来る。 局所状態は通常のリストの
最初と最後へのポインタからなる。 従って make-queue は次の
形である。
(define (make-queue)
(let ((front-ptr ... )
(rear-ptr ... ))
<内部手続き>
(define (dispatch m) ... )
dispatch))
make-queue の定義を完成させよ。
よろしくお願いします。
0195194
2005/12/06(火) 04:45:210196デフォルトの名無しさん
2005/12/07(水) 21:41:100197デフォルトの名無しさん
2005/12/13(火) 09:55:20二次元の局所表
(define (make-table) (let ((local-table (list '*table*)))
(define (lookup key-1 key-2) (let ((subtable (assoc key-1 (cdr local-table))))
(if subtable (let ((record (assoc key-2 (cdr subtable))))
(if record (cdr record) #f) #f)))
(define (insert! key-1 key-2 value)
(let ((subtable (assoc key-1 (cdr local-table))))
(if subtable (let ((record (assoc key-2 (cdr subtable))))
(if record (set-cdr! record value)
(set-cdr! subtable
(cons (cons key-2 value) (cdr subtable)))))
(set-cdr! local-table (cons (list key-1 (cons key-2 value))
(cdr local-table))))) 'ok)
(define (dispatch m) (cond ((eq? m 'lookup-proc) lookup)
((eq? m 'insert-proc!) insert!)
(else (error "Unknown operation -- TABLE" m))))
dispatch))
を三次元に拡張せよ。
お願いします。
0198デフォルトの名無しさん
2005/12/13(火) 11:32:000199デフォルトの名無しさん
2005/12/13(火) 21:40:080200デフォルトの名無しさん
2005/12/13(火) 21:54:13考えておくというのが危機管理というものではないのか?
0201デフォルトの名無しさん
2005/12/13(火) 23:31:270202デフォルトの名無しさん
2005/12/14(水) 18:20:40質問です。 →質問ですか? 違います。
拡張せよ。 →拡張するか? しません。
お願いします。→お願いしますか? 知りません。
終了
0203デフォルトの名無しさん
2006/01/31(火) 00:26:310204デフォルトの名無しさん
2006/03/14(火) 21:46:010205デフォルトの名無しさん
2006/03/14(火) 22:46:030206デフォルトの名無しさん
2006/03/30(木) 05:38:180207デフォルトの名無しさん
2006/04/15(土) 22:52:52http://d.hatena.ne.jp/higepon/19700103/1145105233
0208デフォルトの名無しさん
2006/04/23(日) 14:06:25幅の距離を短くすればある程度は細長くなるんですけど。
0209デフォルトの名無しさん
2006/07/23(日) 07:40:030210デフォルトの名無しさん
2006/08/12(土) 16:20:550211デフォルトの名無しさん
2006/10/13(金) 19:39:090212デフォルトの名無しさん
2006/10/28(土) 20:33:55新宿東口紀伊国屋にはなかったんだ。
0213デフォルトの名無しさん
2006/10/28(土) 21:48:09本当に無かったのか?検索したら在庫出てきたぞ?
棚の場所が変なところだから見過ごしやすいが。。。
http://bookweb.kinokuniya.co.jp/guest/cgi-bin/wshosea.cgi?W-NIPS=9973257464
ネットで在庫検索できる書店では、紀伊国屋の新宿2店舗、三省堂神田本店、
ジュンク堂池袋本店、八重洲ブックセンターにはある模様。
0214デフォルトの名無しさん
2006/10/29(日) 09:11:24俺は南口ので買ったぞ
0215デフォルトの名無しさん
2006/10/29(日) 10:59:250216デフォルトの名無しさん
2006/10/30(月) 12:02:30翻訳
0217デフォルトの名無しさん
2006/10/31(火) 01:14:45英語で読んだ方がいい
0218デフォルトの名無しさん
2006/10/31(火) 08:36:320219デフォルトの名無しさん
2006/11/01(水) 12:02:06http://mitpress.mit.edu/sicp/
にfull textがあるくらいだから、
お願いすれば、許可が出るかも知れない。
ただ、著者だけの問題じゃなくて、
翻訳を出している出版者との関係も問題になるから難しいとは思う。
0220デフォルトの名無しさん
2006/11/01(水) 19:07:030221デフォルトの名無しさん
2006/11/01(水) 19:31:23infoで読める原書も手に入れたんで、原書を参照しつつ読んでみようと思ってる
0222デフォルトの名無しさん
2006/11/01(水) 23:34:130223デフォルトの名無しさん
2006/11/01(水) 23:52:50出版社の契約は国単位であって、言語単位じゃない気がするけど。
0224デフォルトの名無しさん
2006/11/01(水) 23:55:040225デフォルトの名無しさん
2006/11/02(木) 00:09:240226デフォルトの名無しさん
2006/11/02(木) 00:42:05原著だってパブリックドメインではない
原著者が許可すれば何やってもOK
原著者が許可しなければすべてNG
0227デフォルトの名無しさん
2006/11/02(木) 01:18:410228デフォルトの名無しさん
2006/11/02(木) 01:39:19うん、それは了解してる。スマソ。
0229デフォルトの名無しさん
2006/11/02(木) 01:47:310230デフォルトの名無しさん
2006/11/02(木) 21:57:21「引数としてリストを取り、同じ要素の逆順のリストをかえす手続きreverseを定義せよ」
がわかりません。自分的に
(define (reverse lst)
(if (null? lst)
null
(cons (reverse (cdr lst)) (car lst))))
としたら普通にダメでした。例えば、(1 2 3 4)が((((() . 4) . 3) . 2) . 1)となってしまうので。
おながいします。
0231デフォルトの名無しさん
2006/11/02(木) 22:44:58あるいは累積引数を使う。
0232デフォルトの名無しさん
2006/11/02(木) 22:55:32ありがとうございます!
0233デフォルトの名無しさん
2006/11/06(月) 03:49:09(define (reverse lst rlst)
(if (null? lst)
rlst
(reverse (cdr lst) (cons (car lst) rlst))))
(reverse '(1 2 3 4) ()) => (4 3 2 1)
appendってなんかコストかかりそう
0234デフォルトの名無しさん
2006/11/06(月) 07:51:45(define (reverse list) (fold cons '() list))
0235デフォルトの名無しさん
2006/11/14(火) 00:38:31中国語版の話はちょいワロタ
0236デフォルトの名無しさん
2006/12/16(土) 20:31:310237デフォルトの名無しさん
2006/12/21(木) 18:56:010238デフォルトの名無しさん
2006/12/21(木) 19:18:130239デフォルトの名無しさん
2007/01/04(木) 08:07:070240デフォルトの名無しさん
2007/01/04(木) 10:05:430241デフォルトの名無しさん
2007/01/14(日) 02:06:30いろんな解答集見たけど,Ex 2.73でpackageを微分でまとめている人多いけど,それだったらデータ主導型にしている意味ないじゃん.
全然加法的じゃないじゃん.
(define (install-sum-package)
・・・(和の微分ぷろぐらむ)
(put 'deriv '+ deriv-sum)
'done)
のようにoperatorでくくらないと.
0242デフォルトの名無しさん
2007/01/30(火) 15:10:56次に示すScheme プログラムについて以下の問に答えよ。
(define (subtree? t1 t2)
(cond ((atom? t1) (eq? t1 t2))
(#t (cond ((atom? t2) #f)
(#t (or (and (subtree? (car t1) (car t2))
(subtree? (cdr t1) (cdr t2)))
(or (subtree? t1 (car t2))
(subtree? t1 (cdr t2)))))))))
関数subtree?は二つのS 式(S 表現) t1, t2 を入力とし、真偽値(#t あるいは
#f) を返す関数である。
関数subtree?が真(#t) を返すための必要十分条件は何であるか答えよ。また、
関数subtree?が実際そのような関数であることをS 式に関する帰納法を用い
た議論によって示せ。
0243デフォルトの名無しさん
2007/01/30(火) 15:31:190244デフォルトの名無しさん
2007/02/05(月) 06:14:07まあ実際appendはコストかかるよねー
オーダーで言うと,231がΘ(n^2)で233がΘ(n)くらいかな?
0245デフォルトの名無しさん
2007/02/12(月) 17:41:360246デフォルトの名無しさん
2007/02/12(月) 17:52:05珍しいΘ(シータ)の使い方だな
0247デフォルトの名無しさん
2007/02/13(火) 05:18:15通常はworst caseのupper boundで事足りると思うけど。
0248デフォルトの名無しさん
2007/03/14(水) 19:37:130249デフォルトの名無しさん
2007/03/14(水) 20:20:110250デフォルトの名無しさん
2007/03/14(水) 20:24:290251デフォルトの名無しさん
2007/03/14(水) 20:40:26どうもです。そうなんですか。
読書会とかあるみたいだから、一人じゃ難しいのかなぁと。
0252デフォルトの名無しさん
2007/03/15(木) 05:37:27■ このスレッドは過去ログ倉庫に格納されています