Lisp Scheme Part39
■ このスレッドは過去ログ倉庫に格納されています
0001はちみつ餃子 ◆8X2XSCHEME
2014/08/14(木) 20:55:52.61ID:o+vsYevq■前スレ
Lisp Scheme Part38
http://peace.2ch.net/test/read.cgi/tech/1391252139/
■テンプレ
ttp://wiki.fdiary.net/lisp/
■関連スレ
【入門】Common Lisp その10【質問よろず】
ttp://toro.2ch.net/test/read.cgi/tech/1361341876/
【Scheme】Schemeインタプリタ Mosh Part1【Lisp】
ttp://toro.2ch.net/test/read.cgi/tech/1272469779/
【Lisp】プログラミング言語 Clojure #3【JVM】
http://toro.2ch.net/test/read.cgi/tech/1380333808/
【魔法】リリカル☆Lisp【言語】
ttp://toro.2ch.net/test/read.cgi/tech/1183396621/
0002デフォルトの名無しさん
2014/08/15(金) 00:13:29.39ID:uTPP5FCM0003デフォルトの名無しさん
2014/08/15(金) 02:06:59.64ID:UqEI85rN> 日本語訳がおかしい気がする
>そして第二に、最良の事例(もしくは標準的な事例でさえも)は、タスクによって左右される
>ものではないと考えられていることです。つまり、ワープロのコードを記述するために最良の方法は、
>宇宙探査機の制御システムのコードを記述する上でも最良の方法だという憶測です。しかし、そうではありません。
practiceは「事例」では少しおかしく、「方法」でいい。
「つまり」以降に出てくるwayも「方法」になるので違いを出したいならば「実践」かな。
「やり方」としてもいいと思う。
0004デフォルトの名無しさん
2014/08/15(金) 20:34:52.47ID:HK4d36CL0005デフォルトの名無しさん
2014/08/15(金) 20:59:55.06ID:8BWzrSgfApacheをHunchentootに置換する権利をあげよう
0006デフォルトの名無しさん
2014/08/16(土) 16:36:46.85ID:HLPR753i0007デフォルトの名無しさん
2014/08/17(日) 22:17:21.13ID:kroYkBys0008デフォルトの名無しさん
2014/08/21(木) 17:04:30.61ID:24bfdA7I要するに自身へのポインタを引数に渡して、そのポインタに再帰させるんだな
適用順Yコンビネーター(という関数)を作らなくてもいいんだな
例 リストのメンバーか?
(((lambda (self-ptr)
(lambda (a l)
(cond
((null? l) #f
((eq? (car l) a) #t
(#t ((self-ptr self-ptr) a (cdr l))))))
(lambda (self-ptr)
(lambda (a l)
(cond
((null? l) #f
((eq? (car l) a) #t
(#t ((self-ptr self-ptr) a (cdr l))))))) 2 ’(1 2 3))
0009デフォルトの名無しさん
2014/08/21(木) 22:00:48.14ID:1s6K9Kp00010デフォルトの名無しさん
2014/08/21(木) 23:10:20.54ID:mKoqw6yc0011デフォルトの名無しさん
2014/08/22(金) 11:49:57.51ID:qYNWrdHCこれnaoiwata?
もしそうなら、かわいいからWishリストの本でも贈ろうかな^^
Wishリスト
http://www.amazon.co.jp/registry/wishlist/3FSK478U0FBC/ref=cm_wl_sb_o?reveal=unpurchased&filter=all&sort=priority
0012デフォルトの名無しさん
2014/08/22(金) 15:49:00.79ID:fadX/ShWこの界隈の人間がこういうの許容するやつばっかりだと思われるのも嫌
0013デフォルトの名無しさん
2014/08/22(金) 15:58:09.30ID:4AO6/f5c可愛いSchemeも
継続よ、継続よ
と泣いて喜ぶ
>>12
しね早漏包茎ついでに短小
0014デフォルトの名無しさん
2014/08/22(金) 16:09:18.10ID:FgHOhvav0015デフォルトの名無しさん
2014/08/22(金) 16:53:35.92ID:fadX/ShWあらごめんなさい。11についてかいたのですけれど何か問題でも?
0016はちみつ餃子 ◆8X2XSCHEME
2014/08/22(金) 21:00:18.61ID:ek2Grjit0017デフォルトの名無しさん
2014/08/23(土) 21:25:52.18ID:qr79zWyH婦人会もメロメロやで
俺はニボシくってチンポ固くしたで
おまえ等も見習えや
0018デフォルトの名無しさん
2014/08/24(日) 14:05:37.88ID:ngQva2ba0019デフォルトの名無しさん
2014/08/29(金) 07:58:34.13ID:IguOVOzJ書いたものが動かない!()の対応チェックでとんでもなく時間かかった.
俺はまだまだだな。リスプと取り組んで半年
0020デフォルトの名無しさん
2014/09/03(水) 05:10:48.67ID:5qTogmZr「関数と手続の間の対称性は事物の属性の説明と行いの説明との間の一般的区別に関する反映です。」
みたいなすばらしい日本語ですごいありがたみがあった
0021デフォルトの名無しさん
2014/09/03(水) 06:03:21.17ID:Pspo8/9n8章までは簡単だったが無名再帰は感覚化するのに何度もやり直した。
最終章でのインタープリター作りは快調に終わったが、これ、終わり方中途半端で「後は自分で完成させなさいね」って感じ?
最後の一ページでのcons/car/cdrの定義
はじめなにやってんるんだが意図がわからんかった
最後の一ページにきてはじめて
「えへへ、内部のデータ構造としてはリストは幻影、実体はセルやで」
とささやいたんやな
で
「だからよぉ、もうconsもcarもcdrも
primitiveとしなくてもええんやで」
とか言ってるくせに
primitiveの適用関数はそのままでおえてるし。後は自分でやれってかあ。
参考資料テキストから
(define cons
(lambda (u v)
(lambda (b)
(cond
(b u) (t v)))))
(define car
(lambda (l)
(l t)))
(define cdr
(lambda (l)
(l nil)))
0022デフォルトの名無しさん
2014/09/03(水) 11:16:32.58ID:grGI9d1XThe Seasoned Schemer 修行
The Reasoned Schemer (論理プログラミング)
やったことないけど、2冊目に繋がってたんだっけ?それとも別トピック?
0023デフォルトの名無しさん
2014/09/03(水) 18:43:19.19ID:73LZ6iokそんなこと最後のページに書いてんのか
文学的想像力の豊かすぎる人にはちょっとアレな本だね
0024デフォルトの名無しさん
2014/09/05(金) 21:58:27.17ID:LsksGc1g( (car '(+ -)) 1 2)
で 1 + 2 は計算できないんですけど、どうすればいいでしょうか
0025デフォルトの名無しさん
2014/09/05(金) 22:08:59.44ID:nNMRtnaP0026デフォルトの名無しさん
2014/09/05(金) 22:58:39.75ID:LsksGc1gこれ↓
(define oplist (list f1 f2))
(define (f1 v) (+ 0 v))
(define (f2 v) (- 0 v))
を reple で load で読み込むとエラーになるけど
これ↓
(define (f1 v) (+ 0 v))
(define (f2 v) (- 0 v))
(define oplist (list f1 f2))
はエラーになりません
もしかしてgucheも関数を定義する順番を考えないといけないということでしょうか
0027デフォルトの名無しさん
2014/09/06(土) 00:39:29.41ID:7NWNK+Dr0028デフォルトの名無しさん
2014/09/06(土) 01:48:12.10ID:H+1wKpki0029デフォルトの名無しさん
2014/09/07(日) 14:52:03.72ID:2ylfd4lm> もしかしてgucheも関数を定義する順番を考えないといけないということでしょうか
oplist自体は関数じゃないので、その定義の際には
定義式の (list f1 f2) が評価されねばならない。
しかし最初のだと、この式の評価の時点で f1, f2 は未定義だからエラーになる。
関数ならば定義の時点で本体式は評価されず、その中で参照している識別子が
定義済か否かは問わないので、次の2つはどちらもエラーにならず同じ結果になる。
(define (app-pair v) (list (f1 v) (f2 v))
(define (f1 v) (+ 0 v))
(define (f2 v) (- 0 v))
または
(define (f1 v) (+ 0 v))
(define (f2 v) (- 0 v))
(define (app-pair v) (list (f1 v) (f2 v))
0030デフォルトの名無しさん
2014/09/07(日) 15:00:31.64ID:Hz0DmE0wなるほどぉ、勉強になった
0031デフォルトの名無しさん
2014/09/07(日) 15:36:02.63ID:qqB/9i/kCとから手続き型言語から入るとこういう疑問を余り抱かないと思うけど、
最近は一番最初にプログミングを覚えた言語がhaskellですとかあるんか?
0032デフォルトの名無しさん
2014/09/08(月) 13:09:11.00ID:1svGDpQ90033デフォルトの名無しさん
2014/09/12(金) 13:54:39.12ID:Ypjnf85z0034デフォルトの名無しさん
2014/09/14(日) 13:03:02.18ID:vuNBw+gj0035デフォルトの名無しさん
2014/09/14(日) 14:06:43.40ID:Q+DajjuF0036デフォルトの名無しさん
2014/09/14(日) 15:17:27.62ID:jNUFi1DhDylan
OCaml
0037デフォルトの名無しさん
2014/09/14(日) 15:22:42.36ID:6ldmPVQO0038デフォルトの名無しさん
2014/09/14(日) 17:16:05.39ID:Q+DajjuFdylan近いか?
dylan自体がselfとかjsに近いからjsが近い言うた僕が言うのもなんだけど。
0039デフォルトの名無しさん
2014/09/14(日) 17:26:54.59ID:jNUFi1Dh名前空間管理やSLOTアクセス管理に無頓着
0040デフォルトの名無しさん
2014/09/14(日) 21:44:39.27ID:uFPl4kjJ0041デフォルトの名無しさん
2014/09/15(月) 02:06:28.47ID:RdKEbqlY0042デフォルトの名無しさん
2014/09/15(月) 18:36:37.73ID:upNhnkM60043デフォルトの名無しさん
2014/09/16(火) 00:12:54.33ID:tKxjmxiDカンマ演算子とか三項演算子とかfor文とか
0044デフォルトの名無しさん
2014/09/16(火) 21:09:01.47ID:Zss/iCB4異論は多いみたいだが私もそう感じる http://peace.2ch.net/test/read.cgi/tech/1313183984/594
0045デフォルトの名無しさん
2014/09/16(火) 23:27:30.64ID:0xhBhzna0046デフォルトの名無しさん
2014/09/17(水) 01:19:39.44ID:i84HTWw6> てかC言語って割とLispの影響が見える
>
> カンマ演算子とか三項演算子とかfor文とか
それらはAlgol 68からの継承だよ。
いわゆるAlgolはAlgol 60を指しAlgol 60は通常の文言語だが
Algol 68は手続き的(書き換え可能な記憶域を書き換えることで計算を表す)な式言語で
Cでの代入操作が文でなく式の演算子になっているのはAlgol 68が源流。
カンマ演算子や3項演算子もAlgol 68が元祖でそれから受け継いだもの。
for文の各パーツがオプション的になってるのもAlgol 68のループ構文からの流れだ。
Algol 68を少し真面目に調べてごらん。Cがどれだけ影響を受けたか良くわかる。
0047デフォルトの名無しさん
2014/09/17(水) 07:43:45.31ID:ry1QXF9Rhttp://ja.m.wikipedia.org/wiki/LISP
http://ja.m.wikipedia.org/wiki/ジョン・マッカーシー
マッカーシーは60年の時点でALGOL設計委員会の委員やって、ALGOLに触発されたともあるので
LISPとALGOL68の構文の関係は60-68年当時のLISPを調べないと分からないかも。
0048デフォルトの名無しさん
2014/09/17(水) 17:35:17.17ID:RlznIxIPLispでAlgolの影響とか言われるのは、SchemeとかCommon Lispとかの
近代的なLispの静的スコープ。あれはAlgol(68じゃなくて60も)で関数定義を
ネストさせた場合の意味論と同じ。これはマッカーシー先生は関係しない
んじゃないかなぁ。
0049デフォルトの名無しさん
2014/09/18(木) 01:17:15.07ID:ITHwf95qMcCarthyはAlgol 68には全くタッチしていない。
そもそもAlgol 60の設計をやった連中はWijngaardenのチームが出してきたAlgol 68の提案を見て
ほぼ例外なくあきれ返って愛想をつかしたのだから。
Algol 60とAlgol 68とは言語の中身や基本コンセプトも設計したメンバも全く別だよ。
Algolという単一の言語の年代別バージョンの違いじゃないんだ。
Algol 60とAlgol 68とは、CとAlgol 68との違い以上に違う言語。
Algol 60とAlgol 68とを明確に区別せず単なるバージョンの違いのようにみなして議論するのは全くのナンセンス。
0050デフォルトの名無しさん
2014/09/18(木) 06:20:50.77ID:3NMkLfKM0051デフォルトの名無しさん
2014/09/18(木) 13:24:17.35ID:IKF3bMicあとCの起源にまつわる伝説のあやしさと、Algol68からの影響については、
このページがよくまとまってる。 ttp://nanyanen.jp/comp/corigin.html
0052デフォルトの名無しさん
2014/09/19(金) 01:33:00.88ID:nqW+90Tw> どうして「そんなに違う」のに同じ名前(Algol)を継承したの?
IFIPという情報処理に関する国際組織のWG2.1(だったと思う)が中心になって、みんなが共通に使える(つまり特定企業の持ち物でない)
アルゴリズム記述言語(algorithmic language)を作ろうということになって作られたのがALGOL 60。AlgolはALGOrithmic Languageの略。
で、さらに強力な記述力を持つものにしようと1968年を目途につくることになって、提案を募った結果、オランダのWijngaardenらのチームが
選ばれて設計を任された。それで作られたのがALGOL 68。
つまりALGOLという名前は普通のプログラミング言語の名前のように純然たる固有名詞じゃなくて
ALGOrithmic Languageという一般用語の省略形という側面をも含んでいるんだよ。
だから文法的にも言語設計哲学的にも全く異なった言語や両者以外のいくつもの言語案がALGOLの名前をもっているんだ。
例えばALGOL 68の提案に危機感を覚えた一人にHoareさんがいる。で、彼が中心になって作った代替案はALGOL Wという言語。
これは実際に処理系も作られたし、これによるプログラミングの教科書も少なくとも1冊はちゃんと出版された(もちろん英語ね)。
日本でもALGOL 60の後継案(つまり後のALGOL 68になる提案と争った候補の一つ)を提案しており、ALGOL N(NはNipponの意)と
呼ばれている。これも1冊だけその言語設計哲学・コンセプト面を扱った本が日本語で出版された。
0053デフォルトの名無しさん
2014/09/19(金) 01:37:15.54ID:nqW+90Tw連投ごめんね。
Knuthさんの作った文書整形言語&プログラムであるTeXの一番最初の処理系は
SAIL(確か Stanford AI Languageの略じゃなかったっけ?不確かでスマン)で書かれたが、
私の勘違いでなければ、SAILはHoareさんたちのALGOL Wから発展した言語だったはず。
0054デフォルトの名無しさん
2014/09/19(金) 01:51:31.12ID:TV+vn4Ur彼の方がメインだったはず。
ALGOL 68と60の後継を競った。
そのWrith は pascal の人?であればかなり納得の系譜だね
0056デフォルトの名無しさん
2014/09/19(金) 10:21:53.64ID:vmyXN9M9Nは島内剛一先生だったよね確か。
0057デフォルトの名無しさん
2014/09/20(土) 02:08:25.61ID:EUFRt8DwAlgol WのWはWirthさんのWだったのか。
なるほど、それをHoareさんらと共同でまとめて対抗案として提案したという延長として、
さらにPascalをWirthさんが作ったときに
HoareさんはFloydさんのアプローチを発展させた公理的意味論を編み出して
Pascalに対して具体的に定義したわけだ。
0058デフォルトの名無しさん
2014/09/20(土) 12:48:12.90ID:rTgfsjb+公理的意味論も構築しやすかった。
0059デフォルトの名無しさん
2014/09/20(土) 18:17:17.90ID:TBvJ9nfM0060デフォルトの名無しさん
2014/09/20(土) 18:32:13.32ID:j8ruAE+U0061デフォルトの名無しさん
2014/09/20(土) 19:51:36.91ID:x0cvFC0K0062デフォルトの名無しさん
2014/09/20(土) 20:06:52.11ID:Lh7EqoaX0063デフォルトの名無しさん
2014/09/20(土) 20:40:44.73ID:U9SdVMdG教育のための言語だから
0064デフォルトの名無しさん
2014/09/20(土) 20:47:34.51ID:TI7VGCx50065デフォルトの名無しさん
2014/09/21(日) 00:26:47.22ID:wB7BYq1/あーたしかに end の後ろになにもかかないか、セミコロンか、コンマか、とか今でも間違えるけど‥
http://ideone.com/uVYgb
http://ideone.com/ogrDn
0066デフォルトの名無しさん
2014/09/21(日) 07:16:02.65ID:esUuA1t7どう違うの?
0067デフォルトの名無しさん
2014/09/21(日) 11:04:35.35ID:YP6uE3o3構文論はプログラムの形式を議論する
意味論はプログラムが表現するモデルを議論する
わかりやすく言うと理論的には、構文論が扱うエラーはコンパイラだけですべてを自動検出できるが、意味論が扱うエラーは自動的にはすべてを検出できない
0068デフォルトの名無しさん
2014/09/21(日) 11:35:55.88ID:f71zaoHG0069デフォルトの名無しさん
2014/09/21(日) 11:46:07.70ID:YP6uE3o3(define (factorial n) (* n (factorial (- n 1))))
0070デフォルトの名無しさん
2014/09/21(日) 12:13:45.13ID:rvkNXqzj横からでスマン
その例って静的型付き言語ならエラーにできるかな?
0071デフォルトの名無しさん
2014/09/21(日) 12:25:46.90ID:YP6uE3o3>>69がエラーは、factorialが一般的に何をやる計算かとか、整数が無限にあるというドメインやモデルの知識があってはじめて分かる
なので、コンパイラがエラーを出すのは間違っている
「factorial」が「wait-ever」や「make-overflow」という名前だった場合や、*や-を文字列演算子で上書きしてた場合を考えれば分かる
0072デフォルトの名無しさん
2014/09/21(日) 14:41:39.96ID:DcWnbWt1なるほど、その例で構文論と意味論のイメージがつかめました
サンキュー
0073デフォルトの名無しさん
2014/09/22(月) 01:56:13.79ID:yEa+FP/Pcommon lispで型宣言つけて(safety 0) (speed 3)でマクロで包んでいくのと
どっちがいいんだろう
0074デフォルトの名無しさん
2014/09/22(月) 05:30:19.46ID:YdAcMO6tどんなのか知らないけど、イマドキC使うのは特殊な要件があるの?
CLじゃなくてもPythonとかrubyじゃダメなの?
0075デフォルトの名無しさん
2014/09/22(月) 13:31:12.22ID:KDn0JvdIそういうののaiは探索関数で一ミリ秒でも速くしたほうがいいから
PythonやRubyは遅すぎてダメなの
0076デフォルトの名無しさん
2014/09/22(月) 13:33:17.33ID:jhj0pzxy探索ルーチンは「ボードゲーム」のプログラミングのごくごく一部なの。
そういう初歩的なこともわかってないのがバレバレなの。
0077デフォルトの名無しさん
2014/09/22(月) 13:39:12.79ID:KDn0JvdI0078デフォルトの名無しさん
2014/09/22(月) 13:50:35.67ID:zDNDYNbQ0079デフォルトの名無しさん
2014/09/22(月) 13:52:06.84ID:jhj0pzxy0080デフォルトの名無しさん
2014/09/22(月) 13:52:47.02ID:jhj0pzxy0081デフォルトの名無しさん
2014/09/22(月) 14:04:09.24ID:KDn0JvdIその関数とそれが呼び出される関数で見たら影響は大きい
初歩的なこともわからないとか言ってる時点でただ煽りたいだけなんだろうけど
0082デフォルトの名無しさん
2014/09/22(月) 14:32:52.64ID:jhj0pzxyこのスレで「一ミリ秒でも速く」と言ってるおまえがな。
0083デフォルトの名無しさん
2014/09/22(月) 14:41:39.17ID:zUzK8u9G男の甲斐性
トピュントピュン
0084デフォルトの名無しさん
2014/09/22(月) 14:42:12.30ID:fbKvYZVrCなりアセンブラなりで書き直せば?
0085デフォルトの名無しさん
2014/09/22(月) 14:59:33.62ID:zUzK8u9Gエヘヘ、本番できる?
0086デフォルトの名無しさん
2014/09/22(月) 16:40:28.76ID:TZpz70lm柔軟なマクロのあるlispが有利だと思った
0087デフォルトの名無しさん
2014/09/22(月) 18:33:23.19ID:A5LkEIU6http://labs.yaneu.com/20090905/
0088デフォルトの名無しさん
2014/09/22(月) 19:15:14.18ID:vIHnf5mS勉強になった
0089デフォルトの名無しさん
2014/09/22(月) 21:15:48.35ID:vh/Af1aB0090デフォルトの名無しさん
2014/09/22(月) 21:19:33.61ID:TZpz70lm0091デフォルトの名無しさん
2014/09/22(月) 21:48:26.96ID:hgHWAqnH0092デフォルトの名無しさん
2014/09/23(火) 01:41:59.82ID:Yz+1g6sQ目標高いって素晴らしいやん。
0093デフォルトの名無しさん
2014/10/06(月) 16:40:18.09ID:drMhmn/H209 デフォルトの名無しさん sage 2014/10/05(日) 15:35:13.47 ID:37iiGiPw
>>164
define seq(n){
define seq1(m,n1,n2,n3,n4){
if(m = n)
(n1 + n2 + n3 + n4)
else
seq1(m + 1,n1 + n2 + n3 + n4,n1,n2,n3)
}
seq1(6,3,2,1,0)
}
seq(10000)
1455650563828306671891266930369....
0094デフォルトの名無しさん
2014/10/06(月) 17:37:21.84ID:Gl61S3h80095デフォルトの名無しさん
2014/10/06(月) 18:26:46.05ID:DaOiROEZ「構文がS式のPascal」みたいなものを作ってみたら?
0096デフォルトの名無しさん
2014/10/06(月) 18:29:33.66ID:QJRx0X30簡単だよ。資料はここ。
http://homepage1.nifty.com/~skz/Scheme/sapphire.html
Gaucheでもリードマクロを使えば割と簡単にできると思う。
0097デフォルトの名無しさん
2014/10/06(月) 18:38:16.03ID:7Yf7z2yPプログラミングのお題スレ Part5
http://peace.2ch.net/test/read.cgi/tech/1411227287/
>>96
サンクス、勉強してみる
0098デフォルトの名無しさん
2014/10/06(月) 18:40:01.95ID:7Yf7z2yPいろいろやってみる。
まだ、Scheme上でSchemeインタープリター実装の勉強段階だけど
0099デフォルトの名無しさん
2014/10/06(月) 20:56:28.09ID:JOYgfRo1rubyの処理系のコードをいじった方がはやいと思う
0100デフォルトの名無しさん
2014/10/06(月) 21:05:49.44ID:0Gu/ZxPoLispで普通に書いた方がよくね?
なんでわざわざ対応したエディタも無い言語にしたがるのかマジでわからん
0101デフォルトの名無しさん
2014/10/06(月) 21:18:58.22ID:vQmjb8cS■ このスレッドは過去ログ倉庫に格納されています