Lisp Scheme Part39
レス数が950を超えています。1000を超えると書き込みができなくなります。
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:vQmjb8cS0102デフォルトの名無しさん
2014/10/06(月) 21:29:40.64ID:Gl61S3h8Lisp に C 風の外観を与えるのは悪いわけじゃないけど、
それで Lisp らしさを捨ててしまうのなら Ruby や JavaScript と比べて勝るところは何があるっていうんだ?
自分が欲しい俺俺言語を簡単に定義できる例としてなら有用だけど、
それを仕様として固めて広く使ってくださいってことになると、
Ruby では駄目なんですか、 JavaScript で駄目な理由は何ですかってことになる。
そこらへんのポリシーがうまく説明できてない感じ。
うまく説明できてないだけにも見えるので、
何をしようとしているのかをもちっと踏み込んだ説明が欲しいな。
0103デフォルトの名無しさん
2014/10/06(月) 21:36:10.74ID:JOYgfRo1携帯やエミュレータ用のコンパイラを作らされたことなら何度か
0104デフォルトの名無しさん
2014/10/07(火) 03:12:08.82ID:WXeOZ0gk意義を議論する以前に、恐らくはまだ作った本人でさえまだほとんど使ってないんじゃないか。
良くも悪くもまだ単なるオモチャだと思う。普通に考えればデバッグは複雑になるはずだけどどうやってるの、とか気になる、
0105デフォルトの名無しさん
2014/10/07(火) 04:07:57.75ID:C9GpiM2Rあほか
0106デフォルトの名無しさん
2014/10/07(火) 13:35:29.80ID:4nlgcGJf仕様がこなれてないのは使い込み不足だろうからこれからに期待ってことでいいけど、理念については説明が下手なのと視野狭窄だと思う。
Lispを学ぼうとする人にとっつきやすい文法を提供できるというのはよいと思うよ。
でも、そこには暗黙の想定があって、「Lispを学ぼうとしている」という大前提があるわけ。
そういう想定がなくて、言語に選択肢がある状況で「とっつきやすい (しかし、少し制限された) Lisp から始めて最終的には Lisp を使えるようになりましょう」と
「Ruby を学びましょう」ならあえて前者を選ぶかは疑問。
Lispを使う動機がない人にとってはアピールにならない。
書いてる人にとってはLispを使うのがあまりにも当然の大前提という感じになっちゃってて説明するまでもないと無意識に思っちゃったのかな。
0107デフォルトの名無しさん
2014/10/07(火) 19:57:23.15ID:0fgCkF+sメタなものに興味があってLispを覗いてみたらカッコだらけで、
「ゲッ!やめた、おれRubyにする」ってヤツもいるんじゃないの。
あと、Lisperに得意そうにへんちくりんなマクロを見せつけられて、
「だめだわ、オレ、Rubyがいい」なんてのもいそうだけど。
0108デフォルトの名無しさん
2014/10/07(火) 20:39:36.96ID:4zn5sOBS0109デフォルトの名無しさん
2014/10/07(火) 21:28:52.88ID:R2Wn2gKK確かにその通りなんだが、Lispの売りってそれだけか?
0110デフォルトの名無しさん
2014/10/07(火) 21:53:18.79ID:4zn5sOBSというか、「同相性があればそれはLispだ」と強弁してもいいかと
0111106
2014/10/07(火) 22:10:21.90ID:4nlgcGJfそうだよ。 そういう色んな状況が想定できるんだよ。
で、目線が違うと「それはメリットじゃないよね」っていう疑問になっちゃうこともあるから、
立場をきちんと表明しなきゃね、前提を共有できるような記述が欲しいねっていうことを言いたいわけ。
0112デフォルトの名無しさん
2014/10/07(火) 22:49:23.85ID:R2Wn2gKK前提は確定的なものではないだろう。人間の考えは変化する。
将来、メタなものに興味を持つ可能性のあるものも含めて広い間口を持たせるということでいいのではないかね。
0113デフォルトの名無しさん
2014/10/08(水) 15:22:17.94ID:vDaEL9hJいいよ。 悪いなんて思ってないよ。
だけど、その場合には別目線で見ている人には意義が伝わらないというデメリットが残るってだけ。
俺自身はある程度さっすることは出来てるけど、もやっとした気持が残るくらいには伝わってない。
伝わらなくてもいいという決断もひとつの決断だし、それはそれでもいい。
でも、たぶんだけど、これはそういう決断の結果じゃなくて言葉足らずなんじゃないかなという風に見えたんだよ。
0114デフォルトの名無しさん
2014/10/08(水) 18:04:40.36ID:bn7UbsnZScheme使ってもいいかな?
0115デフォルトの名無しさん
2014/10/08(水) 18:08:10.95ID:WnZHVY78どんどんいけ
0116デフォルトの名無しさん
2014/10/08(水) 19:04:34.66ID:bn7UbsnZ漏れ逝ッキマース
0117デフォルトの名無しさん
2014/10/08(水) 19:05:53.99ID:MR5bnFdN,. --ヾ- ,,.. ._
.´ス;/;::;:::::::::::::::::ヽ
レ|. |A:::,::::,::::::::::::ヽ、
r'´ レ|::/::::::::::::::゙i゙iヽ
は └.、″|r.y::::::::::::::| ゙!|
あ `┘ ,.-"::::::::::::::::::/W
` ̄| /ル::::::::;/レ
は / ̄`゙ Y
あ ,.- 、 ! r , 、|
/ ̄ヽ / ヽ ゙! .| ノ | .|
/ \ .i. ヽ |゙i i ' ./
/ 入. \゙i \/ | ゙i /| は
/ ,.-' ∧. \ / | ` | / | あ
n、 ./ ,._'´`-.、/ 入 `-" ゙i .|/"´
ミ ` - ノ / `' .、 , / \ 、| |
^ー-、 , / ヽ_.」' \ , | .|
.ー´ ` 、__.ノ_r'" ヽ
ゝ!_'uu_/
0118デフォルトの名無しさん
2014/10/08(水) 22:59:01.70ID:0paumaloご忠告に感謝。さようなら。
0119デフォルトの名無しさん
2014/10/09(木) 20:02:34.79ID:2I5fPL3p0120デフォルトの名無しさん
2014/10/09(木) 21:07:13.47ID:ToqCSFg7「構文木を書き下し S式と共に生きよう
マクロと共に展開器を越え 括弧と共に抽象を謳おう」
どんなに強力な構文を持っても、
たくさんのかわいそうな構文解析器を操っても、
S式から離れては生きられないのよ。
0121デフォルトの名無しさん
2014/10/09(木) 21:09:49.21ID:gtZnoAyG0122デフォルトの名無しさん
2014/10/10(金) 03:07:33.10ID:rjmpfVYQそんなものに頼ってるから言語が太るんじゃねぇの?
0123デフォルトの名無しさん
2014/10/10(金) 10:08:24.57ID:5qJNOMhH言語が構文糖を持つんじゃなくて、構文糖が欲しいと思ったときにそれが出来るようになってるのがSCHEME的な解決方法で、
つまり、処理系としてはリーダをカスタマイズする方法を用意するべき。
もちろん誰もが納得できるような便利な構文糖は仕様に入れることを検討してもいいし、
誰もが納得とは言わなくても十分に便利なものは処理系の裁量で使えるようにすればいい。
0124デフォルトの名無しさん
2014/10/10(金) 10:24:12.36ID:B0QuKe5M0125デフォルトの名無しさん
2014/10/10(金) 11:22:49.70ID:M4qvcHEh見た目だけのためにコア言語を拡張しないで済むのが糖衣構文なんだから。
0126デフォルトの名無しさん
2014/10/10(金) 23:49:40.22ID:5CO3UGgv0127デフォルトの名無しさん
2014/10/11(土) 00:02:30.31ID:5xt1wBHG0128デフォルトの名無しさん
2014/10/11(土) 00:23:05.97ID:F3plGA7W0129デフォルトの名無しさん
2014/10/11(土) 00:33:41.99ID:uQnh3Z1K0130デフォルトの名無しさん
2014/10/11(土) 01:26:28.73ID:PP2ywDPj実装上は区別があるから無いわけではないんだけど、
仕様上は機能が特殊構文であるべきかマクロであるべきか明確な記述はなくて、
全部一緒くたに「構文 (syntax)」となってる。
do や let みたいにマクロで実装可能なものであっても処理系が特殊構文として持ってもいい。
let を特殊構文にして lambda をマクロで提供したって仕様には適合する。
0131デフォルトの名無しさん
2014/10/11(土) 09:55:40.96ID:oD37Hh5X基本的にマクロや特殊形式は関数にはできないもの(ifとか)。
>>130 が説明しているように、言語組込みの特殊形式にするか、
あらかじめ定義されているマクロにするかは、どっちでも良いことも多い。
(ifとcondの、どっちが組込みでどっちがマクロかは、使う側からすればどちらでも良い)
どうしても組込みでないと困るのはdefmacroとかw
0132デフォルトの名無しさん
2014/10/11(土) 10:52:02.00ID:zYQ8fNL5explicit renaming などを組込で用意してそれを使って伝統的マクロの API を作ることは出来るので、
defmacro が組込でないといけないということもないんじゃないの。
0133デフォルトの名無しさん
2014/10/11(土) 15:18:16.66ID:F3aAgYiVLisp、S式を全く知らない人に知らず知らずのうちに使わせることが可能・・・?
0134デフォルトの名無しさん
2014/10/11(土) 16:00:16.01ID:zYQ8fNL5S式に慣れたベテランにとっては変換を間に挟むのは余計だし、
初心者にとってもそれほどやさしくない気がする。
S式を完全に置き換えられるように設計されてるせいで、
言語としては不自然さがある。
S式をわかった上で少し読みやすい (書きやすくはない) 記法って感じじゃないかなぁ。
一方で、>>96 はそういうこと考えないで言語として自然になることを目指してるみたい。
それと引き換えにちょっと制限が出来てしまってるけど、
S式を意識しないで済むのでT式やI式よりは初心者向けかな。
どこかで妥協は必要だと思う。
0135デフォルトの名無しさん
2014/10/11(土) 16:19:27.80ID:zYQ8fNL5I式はS式の表現力そのままでちょっと括弧を削減できますって感じなわけで
見かけはあまり変わらないけどS式通りの表現力を持つことに寄った妥協点。
sapphaireはC風の見かけに寄った妥協点。
T式は両方取りで無茶しすぎ。
0136デフォルトの名無しさん
2014/10/11(土) 16:29:12.31ID:/fEev8Cq0137デフォルトの名無しさん
2014/10/11(土) 16:31:00.49ID:uQnh3Z1K0138デフォルトの名無しさん
2014/10/11(土) 17:03:06.62ID:6k35EUsC0139デフォルトの名無しさん
2014/10/11(土) 17:12:18.52ID:LAagPdIXなにその鼻から悪魔
むしろLisp界隈がC++が培ったコンパイラ最適化技術を取り込む方がよくね?
0140デフォルトの名無しさん
2014/10/11(土) 18:22:50.18ID:Qq+hYVrD0141デフォルトの名無しさん
2014/10/13(月) 20:48:56.69ID:8z+wIHiSその内容は大抵併記されてないしどういうものかあんまりわかってないんですけど
要はREPLを内部データの完全読み書き可能なデバッグコンソールとして使うっていうだけのことであってますか?
0142デフォルトの名無しさん
2014/10/13(月) 21:16:45.97ID:qNsxmj1VREPL が無いと関数を書いて確認するまでの負荷が高過ぎと感じるね。
大きな関数を書いて苦労してデバッグするより、小さな関数を沢山書いて組み合わせる方が自分は好きだ。そういうスタイルで開発するとき、REPL は必須だと思う。
0143デフォルトの名無しさん
2014/10/13(月) 21:22:14.70ID:dPMNKuH40144デフォルトの名無しさん
2014/10/13(月) 21:25:32.35ID:ncL9fWtV0145デフォルトの名無しさん
2014/10/13(月) 21:44:12.87ID:qNsxmj1V0146デフォルトの名無しさん
2014/10/13(月) 22:00:22.98ID:dPMNKuH40147デフォルトの名無しさん
2014/10/13(月) 22:05:54.07ID:+mHw5fpq勉強になったな
0148デフォルトの名無しさん
2014/10/13(月) 22:06:23.86ID:+mHw5fpq勉強になったな
0149デフォルトの名無しさん
2014/10/22(水) 19:51:20.26ID:6k6LHIEOそういう日記帳みたいなことを書くんじゃなくて、どんな学びがあったのか概要だけでも書いて欲しい。
0150デフォルトの名無しさん
2014/10/23(木) 21:37:25.94ID:E2rgpAnyチンコは朝が元気いい!
とかかなあ
0151デフォルトの名無しさん
2014/10/23(木) 21:41:16.41ID:QudRNv+h0152デフォルトの名無しさん
2014/10/23(木) 21:51:59.95ID:5OLrkwOF0153デフォルトの名無しさん
2014/10/23(木) 21:53:03.66ID:E2rgpAnyThe Little Lisperを終えて
適用順Yコンビネータは感動した
第2版の
The Little Schemerも初版とちゃうあたりからやるかとやっていたら
8 lambda the ultimete
で、いきなりわけわからんものが出てきた。その後を読んで環境を保持したclosureの伏線だと分かったが
テキストではふれてないが、いわゆる
末尾再帰の方法の1つでもあるなと思った
末尾再帰させる?どうなるの?
わからないままきていたが分かって勉強になった
試しにフィボナッチを計算させると
もう非while記述と同じように速い!
(あたりまえだけど)
感動!
Lisp/Schemeっておもしろいね
0154デフォルトの名無しさん
2014/10/23(木) 21:53:52.34ID:E2rgpAnyただ、引数に値を蓄積していく方法ではなく、引数関数の拡張テーブルに値を渡していく方法だった。
主眼は末尾再帰ではなくclosure・閉包
にあるからだろう
(define foo
(lambda (l func)
(if (null? l) (func 0)
(foo (cdr l)
(lambda (x)
(func (+ x 1)))))))
> (foo '( a b c d e f g) + )
> 7
とこんな具合の再帰が出ていた。
(テキストではmultiremberEco)
0155デフォルトの名無しさん
2014/10/24(金) 00:48:52.41ID:gX1HSK/N0156デフォルトの名無しさん
2014/10/24(金) 01:57:05.92ID:f45GzPjn何がどう吹いたの
0157デフォルトの名無しさん
2014/10/24(金) 10:34:08.90ID:Ypc7oszp継続渡しって訳か
0158デフォルトの名無しさん
2014/10/24(金) 16:54:19.69ID:lofQKPiQまだ継続は勉強してないから俺には継続渡しかどうかわからない
もうすぐ継続やるらしいけど
the little schemer
0159デフォルトの名無しさん
2014/10/25(土) 00:12:21.42ID:mxSUw+2Rおれは失敗だと思う
今でこそ普通に動かす環境が存在するけど富豪的環境を想定しすぎていた
あといずれシステムやランタイムがGCでプログラムを勝手に止めるのが我慢ならない
GCの無いLISP作れると思いますか
0160デフォルトの名無しさん
2014/10/25(土) 00:22:36.19ID:ysiqAjTq世代別GCのアルゴリズムではそんなに長い時間止まらないのでは
> GCの無いLISP作れると思いますか
作れるんじゃないですか
今でもGCをオンオフして好きなように出きるはず
0161デフォルトの名無しさん
2014/10/25(土) 00:58:13.95ID:uFZNQhFzGCの無いLISPはLinear Lispでググれよ
0162デフォルトの名無しさん
2014/10/25(土) 02:12:39.72ID:mxSUw+2Rそれを使っていいのかの判断基準にできる
GCを動かさないように「気を付けて」組むことはできるけど
そんなものは最初から無いに越したことないから
Linear Lispは平たく言えば参照カウンタ方式ってことね
参考になったよ
0163デフォルトの名無しさん
2014/10/25(土) 02:14:13.66ID:Av5WAXbhあとは問題に対して使うか使わないかという選択があるだけでは
0164デフォルトの名無しさん
2014/10/25(土) 02:27:34.11ID:zinHr5aI0165デフォルトの名無しさん
2014/10/25(土) 02:31:07.48ID:mxSUw+2Rリソース確保しまくってまともに開放されずにシステムを糞重くする原因だし
メモリ管理はこうせなあかん的な思想の頑固一徹に
ちまちま組ませてた方が良質なソフトを期待できたのでは
ちゃんとメモリ管理してれば1GBもあってまだ足りないなんて状況にはならなかったと思うよ
>参照カウンタってGCの一種やろ?
ちゃんと理解できてないからこういう人も出てくる
0166デフォルトの名無しさん
2014/10/25(土) 02:39:31.57ID:Dd1PybT80167デフォルトの名無しさん
2014/10/25(土) 02:40:25.96ID:Av5WAXbhまあそんなの確かめようがないんで、あとはGCスレでやって
0168デフォルトの名無しさん
2014/10/25(土) 02:41:13.75ID:mxSUw+2R参照カウンタはプログラマが自分で開放タイミングを制御できるからGCではない
GCってのは自分で参照切ったりして手放したつもりでも
GC側の都合でそれがいつ開放されるかは判らず
プログラムがGC発動によって強制停止されるか判らない中
戦々恐々しながら使うやつのことね
0169デフォルトの名無しさん
2014/10/25(土) 02:44:46.55ID:zinHr5aIお前参照カウンタを使ったこと無いだろ。
ていうかLISPのコードを書いたこともないだろ。
0170デフォルトの名無しさん
2014/10/25(土) 02:54:26.49ID:mxSUw+2R参照カウンタの理解も足りてないし
GCと共存するしかないLISPスレだとこれが限界なのか
0171デフォルトの名無しさん
2014/10/25(土) 02:58:12.54ID:LRzO9l4w参照カウントもGCだ
0172デフォルトの名無しさん
2014/10/25(土) 02:59:05.77ID:gAvv+xng0173デフォルトの名無しさん
2014/10/25(土) 03:01:54.06ID:mxSUw+2R用語の定義なんて今更ここて議論したくないから
参照カウンタとLISPとかで使う停止を伴なうGCの区別だけでいいよ
0174デフォルトの名無しさん
2014/10/25(土) 03:04:50.16ID:mxSUw+2Rあっちがなぜか荒らされ始めてるっぽんで避難というか
まともっぽい話ができぞうなスレにちょっとお邪魔してもいいかなと
付き合ってくれてありがとね
0175デフォルトの名無しさん
2014/10/25(土) 07:23:22.81ID:Xx23882P0176デフォルトの名無しさん
2014/10/25(土) 07:49:28.18ID:jjsP8liH誤って解放済みの領域にアクセスしてセキュリティ上の問題が発生するなどということが現実に起きてる以上
その危険を避けられるだけで一定の価値があると思う
0177デフォルトの名無しさん
2014/10/25(土) 09:24:25.55ID:4HszNCxAまさかと思うがC++のshared_ptrの事しか知らないとか言うんじゃないだろうな?>>170
0178デフォルトの名無しさん
2014/10/25(土) 11:29:27.19ID:PP/2Zeey> まともっぽい話ができぞうなスレにちょっとお邪魔してもいいかなと
荒らされ方では互角だと思うけどなw
サンプルはお前
0179デフォルトの名無しさん
2014/10/25(土) 13:21:34.42ID:Zpg9z+IV0180デフォルトの名無しさん
2014/10/25(土) 13:49:24.99ID:WTYSbDLf0181デフォルトの名無しさん
2014/10/25(土) 15:06:36.06ID:Zpg9z+IV0182デフォルトの名無しさん
2014/10/25(土) 15:19:00.68ID:gAvv+xng0183デフォルトの名無しさん
2014/10/25(土) 15:22:01.04ID:Av5WAXbh0184デフォルトの名無しさん
2014/10/25(土) 15:32:48.10ID:pFSvQRs9>「コンピュータプログラムの世界において M式 (meta-expressions) は、 Lisp言語の一部として、S式の人間が読むことの出来る
>形態となることを目的に考えられた。 M式はLispの初期の論文において理論的な言語として使われていたが、実際に実装されることはなかった。 」
>
>S式は人間が読むもんじゃないのかよwとツッコミたくなりますね。
>(M式のほうが)だいぶ「普通」なんだけど、LispプログラマはすぐにS式に慣れてしまったので M式は普及しなかったみたいです。
>S式はプログラムとデータが同じ構造をしている(ので、マクロが使いやすい)けど、M式はそうじゃないですからね。
0185デフォルトの名無しさん
2014/10/25(土) 20:24:07.28ID:WTYSbDLf文とメタ文が同じ記号と構造を持ってると読みにくいという意味だと思っていたが、もしかしてS式も読みにくいモノだったの?
0186はちみつ餃子 ◆8X2XSCHEME
2014/10/25(土) 20:57:34.99ID:uwSWCjXz解放のタイミングがコンパイル時に確定できる場合とそうでない場合を自動で検出して最適化するとか、
言語に制限を加えて常に確定できるようにするとかいった方向でなら面白いことが出来そうな気もする。
0187デフォルトの名無しさん
2014/10/25(土) 21:05:24.23ID:WTYSbDLf0188はちみつ餃子 ◆8X2XSCHEME
2014/10/25(土) 21:13:03.42ID:uwSWCjXzでも、トレードオフのある話だから一概に言えないんじゃない?
結論ってどこの結論?
0189デフォルトの名無しさん
2014/10/25(土) 22:02:53.74ID:mzA+eg7p0190デフォルトの名無しさん
2014/10/25(土) 23:04:51.11ID:8hz22B7tGCをよく理解してないように見えるんだけど気のせいかな
0191デフォルトの名無しさん
2014/10/25(土) 23:05:59.02ID:Av5WAXbh0192デフォルトの名無しさん
2014/10/25(土) 23:07:35.44ID:WTYSbDLf○○を失敗したなら、○○を失敗しないlispを作ればいいのだから
0193デフォルトの名無しさん
2014/10/25(土) 23:11:47.81ID:8hz22B7t0194デフォルトの名無しさん
2014/10/25(土) 23:13:41.36ID:WTYSbDLfschemeになる
0195デフォルトの名無しさん
2014/10/26(日) 00:51:18.48ID:zX2i/6mVワラタ
0196デフォルトの名無しさん
2014/10/26(日) 02:06:41.32ID:uu/zqtNwだよなぁ。
メリットもデメリットもあって状況によって使いわけるという当たり前の判断が出来てない。
0197デフォルトの名無しさん
2014/10/26(日) 02:09:49.85ID:8/HAOo0u0198デフォルトの名無しさん
2014/10/26(日) 07:44:25.19ID:+iDsoHsQ0199デフォルトの名無しさん
2014/10/26(日) 08:20:55.04ID:MmXJ9dwt個人的には任意精度の数値が扱える機能がむしろオプションだったら良かったと思う。そしたらCっぽい計算が楽なのに。
0200デフォルトの名無しさん
2014/10/26(日) 12:58:57.86ID:uXBn6mUw0201デフォルトの名無しさん
2014/10/26(日) 13:35:01.58ID:eoLX8RNk最近のスマホはメモリ空間が狭いのにアプリがたくさん動きかつアプリの生存期間が長くなってしまっている‥
メモリコンパクションも、そもそもOSのメモリ管理すらも、いうほどにはあまりうまくいっていないなという感想を持つ人間が多くなったんじゃないかな
0202デフォルトの名無しさん
2014/10/26(日) 13:57:25.11ID:eoLX8RNkこちらの人はそう考えるのか‥参照カウンタは循環参照を扱えないからね‥
0203デフォルトの名無しさん
2014/10/26(日) 13:58:31.21ID:yJlRO0wF0204デフォルトの名無しさん
2014/10/26(日) 14:11:13.09ID:zX2i/6mV参照カウンタとMarkSweepを世代別にすることで併用するとか最近のGC事情はイロイロあるのだが?
0205デフォルトの名無しさん
2014/10/26(日) 14:16:34.35ID:hfKOgb2xまあ参照するからGCされないんだろうねえー
0206デフォルトの名無しさん
2014/10/26(日) 14:30:32.77ID:eoLX8RNkMark&Sweep と世代別管理が併用されることがあっても、参照カウンタが世代別管理と併用というのはあまり考えられないのでは‥
循環参照が発生した!とランタイムで検出することは可能なの?
0207はちみつ餃子 ◆8X2XSCHEME
2014/10/26(日) 15:42:27.41ID:uu/zqtNw循環参照の検出はそんなに難しくない。 定番の練習問題だろ。
だけど、実行コストはそれなりに大きいから走査のたびにやるのは性能的に厳しいと思う。
何度かに一度だけとかいった形にする必要があるんで、それを世代ごとに区分するのはいいアイデアな気がする。
0208デフォルトの名無しさん
2014/10/26(日) 15:57:52.82ID:eoLX8RNk>実行コストはそれなりに大きい
そう、つまりMark&Sweep そのものだよね
となると、参照カウンタの世界と、Mark&Sweep とかコピーGC とかの世界とは相容れないとおもっているんですが‥
0209デフォルトの名無しさん
2014/10/26(日) 16:37:54.31ID:o1ENwHOW0210デフォルトの名無しさん
2014/10/26(日) 16:42:27.33ID:eoLX8RNk0211デフォルトの名無しさん
2014/10/26(日) 17:00:57.07ID:zX2i/6mV参照カウンタが通常世代まで(edenは別)のGCで使って、Old Space巻き込むFullGCの時にはMark & Sweepって実装は有るよ。
Mark&Sweepなら参照カウンタで循環したオブジェクトも除去される
って言葉で書くと簡単なのに実際に世代別かつ複数検出使うと効率的なGCを行おうとすると死ねる、つか一回死んだ(タグ付きメモリのハード欲しい!!!)、JavaとかSqueak作ってる連中はすげぇと思う。
0212デフォルトの名無しさん
2014/10/26(日) 18:18:54.84ID:RPezmOOm0213デフォルトの名無しさん
2014/10/26(日) 22:24:50.88ID:eoLX8RNkなんだかよくわかりませんが、なんだか面白そうだ‥
どこぞのスレでは GC ネガキャンをやっているようですが、GC のためにハードウェアからの支援があると、なにか幸せが待っていそうですね‥
0214デフォルトの名無しさん
2014/10/26(日) 22:31:38.19ID:DUpdhI9s0215デフォルトの名無しさん
2014/10/27(月) 01:06:03.38ID:WDr9CT/Tタグ付きメモリとかLispマシンだけじゃ無くて結構ハードウェア実装あるからACMの論文以外にもGC関係追いかけてみると良いかもね
;;;実売したプロセッサだとLispMachine以外無いのに(主観)
;;;論文やベンチャー企業のJavaVMの実装には出てきたりする。
0216デフォルトの名無しさん
2014/10/27(月) 01:28:02.16ID:0fYTvMcl>ガベージコレクションのアルゴリズムと実装
>本書は絶版となりました。
・゚・(つД`)・゚・
0217デフォルトの名無しさん
2014/10/27(月) 01:56:52.72ID:M9w8JU4S大学の課題でガベコレ実装しなきゃならなくて
日本語の本で探して見つけたほとんど唯一の (実際、私が見つけられた唯一の) 本だった
0218デフォルトの名無しさん
2014/10/27(月) 02:34:10.95ID:lzC+xCjc良本だから書店に在庫があるうちに購入するといいよ
0219デフォルトの名無しさん
2014/10/27(月) 03:10:29.65ID:SAchMZc1見付からないのは当然。 実際にこれ一冊しか出版されたことがないから。
言語処理系の本とかにGCの話題が含まれることはもちろんあるけど、
GCを体系的にまとめるってことを誰もしなかったんだなー。
0220デフォルトの名無しさん
2014/10/27(月) 08:52:44.81ID:U+brRazh達人出版会でPDF版が買えるぞ
0221デフォルトの名無しさん
2014/10/28(火) 20:51:23.04ID:uvfLqTRT0222デフォルトの名無しさん
2014/10/28(火) 21:17:34.28ID:+jM/bTCW0223デフォルトの名無しさん
2014/10/28(火) 21:29:24.12ID:vS3GoyWK0224デフォルトの名無しさん
2014/10/28(火) 23:46:14.03ID:NoofpkPm0225デフォルトの名無しさん
2014/10/28(火) 23:52:17.55ID:+jM/bTCW0226デフォルトの名無しさん
2014/10/29(水) 05:03:51.48ID:HTBI3UBZ教授のオナニーがメインだが
0227デフォルトの名無しさん
2014/10/29(水) 11:55:48.82ID:BdA+2vPn0228デフォルトの名無しさん
2014/10/29(水) 16:00:21.79ID:LP0tOaxs現実に役に立たない言語なんて何の意味もない
残念だがここからはCommon Lispだ
0229デフォルトの名無しさん
2014/10/29(水) 16:43:24.02ID:PkrkWUB2紹介程度にHaskellの話はあった
0230デフォルトの名無しさん
2014/10/29(水) 20:26:26.71ID:28ztFQW1ん?継続で断念?
0231デフォルトの名無しさん
2014/10/29(水) 20:48:48.97ID:chStTp/6おちつけ、実用的なlispなんてない
0232デフォルトの名無しさん
2014/10/29(水) 21:22:09.17ID:ChF9fM7P0233デフォルトの名無しさん
2014/10/29(水) 21:29:50.55ID:MDNr8+Tt0234デフォルトの名無しさん
2014/10/29(水) 21:34:18.01ID:28ztFQW10235デフォルトの名無しさん
2014/10/29(水) 21:55:49.08ID:4RRnfYb90236デフォルトの名無しさん
2014/10/29(水) 21:57:29.90ID:MDNr8+Tt0237デフォルトの名無しさん
2014/10/29(水) 23:48:17.03ID:M0i1xpGq一方、製品版の実装は、いまだにCがメインです
0238デフォルトの名無しさん
2014/10/30(木) 00:29:00.21ID:pNmRznzW0239デフォルトの名無しさん
2014/10/31(金) 21:35:21.25ID:lPsFKl4L遅いけどこれ知りたい
0240デフォルトの名無しさん
2014/11/01(土) 00:25:42.74ID:etXlBO/A実装つっても所詮インタプリタレベルだし今読んでも参考にならないよ
0241デフォルトの名無しさん
2014/11/01(土) 00:33:25.99ID:WIkAJECL日本語訳があれば実装してみる人もだいぶん増える気がする。
0242デフォルトの名無しさん
2014/11/01(土) 00:43:41.14ID:etXlBO/Aライブラリが無いと残念処理系にしかならないよね
他所様のライブラリを半端に使う手段をくっ付けて完成
0243デフォルトの名無しさん
2014/11/01(土) 00:46:17.48ID:PUzzze1L作ることが目的だからそういうのはどうでもいいかな
0244デフォルトの名無しさん
2014/11/01(土) 01:05:38.66ID:WIkAJECL未定義が多いのは単に議論が続いているってのもあるけど、処理系実装の裁量範囲を広くとるために意図的にやってる箇所もある。
多様な実装が出現することを期待してのことだと思う。
その中でやっぱりこうするべきだっていうのがわかることがあれば将来の仕様に反映されるかもしれない。
だからまぁ色々やってみようぜっていう感じ。
0245デフォルトの名無しさん
2014/11/01(土) 06:58:47.07ID:wzpJ4Ysf例えばHaskellは圏論を武器に新しい概念が沢山出てきている。テキストもある。言語仕様もちゃんと更新していってる。なんつーか、すごく活発なんだよ。
scheme が目指す言語仕様は本当に素晴らしいのかも知れないけど、動きが遅すぎる…
0246デフォルトの名無しさん
2014/11/01(土) 07:07:00.62ID:12FSUUrY0247デフォルトの名無しさん
2014/11/01(土) 08:04:18.22ID:D3jO9L850248デフォルトの名無しさん
2014/11/01(土) 13:36:23.10ID:Ipuv1wRPおのれ、サイトウ!
0249デフォルトの名無しさん
2014/11/01(土) 14:11:19.10ID:wzpJ4Ysf0250デフォルトの名無しさん
2014/11/01(土) 15:55:10.83ID:WIkAJECL機能を追加するのではなく邪魔なものは何かを検討して排除するのがSchemeの仕様の方針と書いてあるだろ。
だからといって処理系の実装に機能を追加するなとかライブラリは不要とか言ってるわけじゃなくて、
むしろ積極的に色々やるために仕様で縛りを付けないというスタンスだよ。
それでもやっぱり統一しとかなきゃならない基盤だと皆が合意した部分だけが仕様になってる。
決まってない部分はお前も含めた皆が自由にしていいところ。
仕様に不足があるならお前が足していいところだ。
0251デフォルトの名無しさん
2014/11/01(土) 22:45:31.50ID:YD1jteWQ「○○が欲しい」 ⇒ 「○○入れればいいじゃん」
0252デフォルトの名無しさん
2014/11/01(土) 22:56:38.73ID:VivsCgFR0253デフォルトの名無しさん
2014/11/02(日) 05:39:05.33ID:t2EpQ33qOSのフックやイベントとかコールバックとして渡す場合どうすんの
0254デフォルトの名無しさん
2014/11/02(日) 09:14:35.48ID:5lL/XLnasetfでアップデートするところでエラーが出るんだ...
誰か助けて
こんな感じに使いたい。
(update-structure player :name "hoge")
(update-structure pos :x 3)
; 以下はコード
(defun update-struct (structure key value)
(let* ((head (type-of structure))
(copy-fn (symbol-function (symb "COPY-" head)))
(copy (funcall copy-fn structure))
(update-fn (symbol-function (symb head "-" key)))
)
; コピーしたstructureをアップデート
(setf (funcall update-fn copy)
value)
copy))
(setq a (make-pos :x 0 :y 0))
(update-struct a :x 3)
0255デフォルトの名無しさん
2014/11/02(日) 09:30:39.88ID:pF+UrMpWどうしてこんなことしてるのかさっぱり分からないコードだ
#'(setf function)は規格に存在しないよ
構造体にslot-valueが使えるのも処理系の拡張だけど
(defun update-struct (struct key value)
(setf (slot-value struct key) value)
struct)
(update-struct a 'x 3)
--> #S(POS :X 3 :Y 0)
何がしたいのか説明がないとわからん
slot-valueは使えないって前提?
0256デフォルトの名無しさん
2014/11/02(日) 10:58:51.49ID:5lL/XLna環境の状態を、関数の引数に渡していく方法でゲームを作ってて、
毎回コピーしてから値の更新するのが面倒だったんだよね
大体こんな感じ↓
(defun battle (player enemy)
(battle (move player 1 2)
(attack player enemy)))
(defun attack (a b)
(update-struct b
:hp (- (player-hp b)
(player-attack a))))
(defun move (s x y)
(let ((pos-x (pos-x (player-pos s)))
(pos-y (pos-y (player-pos s))))
(update-struct s
:pos (make-pos :x (+ pos-x x)
:y (+ pos-y y)))))
; update-struct を使用しない場合
(defun attack (a b)
(let ((copy-b (copy-player b)))
(setf (player-hp b)
(- (player-hp b)
(player-attack a)))))
0257デフォルトの名無しさん
2014/11/02(日) 12:06:38.45ID:pF+UrMpWupdate-structみたいなのは
・予めスロットの名前しか分かってない上存在しないスロットにもアクセスする可能性はある
・実行時にならないとどんな構造体が来るか分からない
こんな場合に必要になるものだと思うよ
この条件だと、規格の範囲では構造体じゃなくてクラスで作るものになる
attackのように決め打ちで(- (player-hp b) (player-attack a))を参照してるなら、使用しない例のように#'(setf player-hp)で良いような気がするんだけど
どうしてもメタプログラミングしたいんならマクロでコード生成とか
単に書くのが面倒だからってことだけど
(defattack player (a b) ...)
(defbattle player (a b) ...)
(defmove enemy (a b) ...)
0258デフォルトの名無しさん
2014/11/02(日) 12:23:57.54ID:XQzpc1uYちがうだろ
やればできる->子供が作れる
やれるけどやらない->彼女がいる
やれない->彼女は居ない
0259254
2014/11/03(月) 10:19:24.10ID:XxOwxkeb色々考えた結果
(setf player-hp)で更新するのが無難っぽいですね。
プレイヤーがスタミナをもっていて、
攻撃するときに自分のスタミナを減らして、相手のHPを減らすような場合とかもあるし
2つ以上のユニットを同時に更新とかが入る可能性があるな
0260デフォルトの名無しさん
2014/11/03(月) 18:38:21.42ID:6XOYW1Vpそうかんがえるのが健康的だな
やればできるなんてのは、大概は
性格的にできない、継続できないアホの言い訳
>>258
オマエは、馬鹿すぎる
0261デフォルトの名無しさん
2014/11/03(月) 21:06:28.82ID:lTQEoFp8従って>>252>>258>>260は同一人物
0262デフォルトの名無しさん
2014/11/03(月) 21:17:41.50ID:jdGUjlHm0263デフォルトの名無しさん
2014/11/03(月) 21:32:47.76ID:2URJ2yqYうわ、精神病!!
レスするな気持ち悪い
0264デフォルトの名無しさん
2014/11/09(日) 10:58:11.34ID:mRPDV88W中置マクロとかなのかな。
0265デフォルトの名無しさん
2014/11/09(日) 11:46:13.25ID:/Un9rwFK0266デフォルトの名無しさん
2014/11/09(日) 12:24:27.88ID:mRPDV88W0267デフォルトの名無しさん
2014/11/09(日) 13:21:43.06ID:26PwmB10でも中置マクロ定義すれば解決する問題でも無いみたい
0268デフォルトの名無しさん
2014/11/09(日) 14:02:59.43ID:9LyR+5oz0269デフォルトの名無しさん
2014/11/09(日) 14:11:50.34ID:g+QB36mR0270デフォルトの名無しさん
2014/11/09(日) 14:19:51.75ID:iOs0WUR2(+ (* 3 (expt x 2)) (* 2 x) 1))
0271デフォルトの名無しさん
2014/11/09(日) 14:39:57.06ID:g+QB36mR3 * expt(x, 2) + 2 * x + 1
やっぱり中置記法必要なんじゃないかな(うらぎり)
インデント揃えたらもっと見やすいでしょとも思うが
0272デフォルトの名無しさん
2014/11/09(日) 14:42:59.95ID:ONxWLUFR0273デフォルトの名無しさん
2014/11/09(日) 14:47:38.30ID:26PwmB10(+ (* 3 (expt x 2))
(* 2 x)
1))
これならなんとか
def f(x):
return ((x**2)*3)+(x*2+1)
やっぱり数式は余計な空白が邪魔になる
0274デフォルトの名無しさん
2014/11/09(日) 15:32:31.42ID:ynWG2Vzt見通しが悪いと感じる理由は、小学生のときから中置だったから
逆に、普通の式は、優先順位が複雑なときに見通しが悪くなる
なので、普段からS式で計算を行なえば問題ない
問題ない
0275デフォルトの名無しさん
2014/11/09(日) 15:35:43.56ID:5LKfT6rZ途中いつの間にか中置になっててあれ?となる事がわりとある。
0276デフォルトの名無しさん
2014/11/09(日) 18:28:34.72ID:mRPDV88W何で2回言ったし。最小二乗とか実際書いてみると不満になるときあってさ。
0277デフォルトの名無しさん
2014/11/09(日) 21:07:21.19ID:LY/WWL8I0278デフォルトの名無しさん
2014/11/09(日) 21:46:35.44ID:j/h8RDYC(+ n (f x) (g x) (- x))
0279デフォルトの名無しさん
2014/11/09(日) 21:50:39.01ID:9hZNEKSJ(* a b c d)
0280デフォルトの名無しさん
2014/11/09(日) 22:35:02.65ID:j/h8RDYC電卓代わりに使うときはそれ便利だよね。
でも、不定個数引数に適用したい場合はapplyでなくreduceを使わざるを得ないし、
最適化まで含めて考えると
(declaim (ftype (function (integer integer) integer) integer-binary-add))
(defun integer-binary-add (x y)
(declare (type integer x y) (optimize (safety 0) (speed 0) (debug 0)))
(the integer (+ x y)) )
みたいなのを型別に用意しなきゃ色々気持ち悪いので、既存の+, *みたいなのとは別に
自動coerceありの2項演算子と自動coerceなしの2項演算子を網羅的に規格で用意してほしいな、とは思う。
で、fixnum用の2項演算子の結果が溢れたらどうする?とかもoptimizeのsafetyとかで間接的に調整じゃなくて、
規格で明確化してほしい。
で、その場合、+, * は自動coerceありの2項演算子の方が良いと思うんだ。‘
0281デフォルトの名無しさん
2014/11/10(月) 10:58:58.66ID:7fhrA1DH最適化というのは処理系に特化するということで,規格で縛るのは矛盾してると思うけど.
それと上で書いてる程度のことは処理系のコード読めばわかるがコンパイラがやってるので人が直に書く必要はないと思う.
applyも同様だけど渡す引数の数による.処理系依存だが条件を満す処理系を使えば良いだけで規格で横並びにする必要性は感じないな.
0282デフォルトの名無しさん
2014/11/10(月) 13:08:19.02ID:3Ls0kjjJアプリケーションプログラマなら特定の処理系上で動作させることを想定してもいいけど
ライブラリプログラマとしては処理系非依存で書けるところは処理系非依存で書きたい。
そういうときの武器が規格なんだよ。
0283デフォルトの名無しさん
2014/11/10(月) 14:42:50.82ID:A6S7EPPR最適化部分を規格として含むことが妥当かどうかの話してるんじゃないの
0284デフォルトの名無しさん
2014/11/10(月) 17:59:57.39ID:3Ls0kjjJどういうふうに最適化されるべきか、という話であれば規格はあまり関係ない。
しいて言えばCLにTCO義務化が入っていなかったのが残念ということくらい。
が、挙動そのものが最適化パラメータ次第で変わることがあり、それが処理系依存ってのはおかしいと思う。
fixnum同士の計算が最適化のパラメータ次第で変わることがある、なんてのは
そもそも最適化の文脈で語られるべきことじゃないと思うんだ。
だから、そういう部分は規格で明確化してほしいという話。
0285デフォルトの名無しさん
2014/11/10(月) 20:45:33.08ID:bjNSxWB8なんでそのとき参加しなかったの
0286デフォルトの名無しさん
2014/11/10(月) 22:35:30.72ID:7cnYJA4z嫌 な ら 作 り 直 し て い い の よ
0287デフォルトの名無しさん
2014/11/10(月) 22:55:40.61ID:vdziLrfh0288デフォルトの名無しさん
2014/11/11(火) 04:03:45.78ID:dhUGr2aJ0289デフォルトの名無しさん
2014/11/11(火) 11:02:53.06ID:rt/qfZQZ0290デフォルトの名無しさん
2014/11/11(火) 14:56:34.22ID:dhUGr2aJ0291デフォルトの名無しさん
2014/11/11(火) 21:24:04.85ID:OI8CRG+B0292デフォルトの名無しさん
2014/11/11(火) 22:07:46.40ID:rt/qfZQZ0293デフォルトの名無しさん
2014/11/13(木) 22:51:05.42ID:Ldx/LKXq(let ((count 0))
(lambda () (set! count (+ count 1)) count))
という手続きで、
(make-counter)を実行するたびに数がカウント出来るのはなぜでしょう?毎回letが評価されてcountは0にならないのでしょうか。
0294デフォルトの名無しさん
2014/11/13(木) 23:01:36.59ID:LPqs6Iq8(let((count 0))〜) = ((lambda(count)〜) 0)
わかるね?
0295デフォルトの名無しさん
2014/11/13(木) 23:03:56.54ID:M0T6H6l+countという名前のラベルが貼られる.letから外れるとcountというラベルは剥がされ,
別の箱に再利用されるが,箱は使ってる限り奪われない.
箱が復数作られ,それぞれ勝手に中身を入れ替えることも起こる.
有限スコープ無限エクステントの理解ってそういうことでいいんだよな?
0296デフォルトの名無しさん
2014/11/13(木) 23:24:36.50ID:7ZjHj42h(let ((count 0)) (lambda () (set! count (+ count 1)) count)) という式を
評価した結果の値だ、って所まではOK?
んで、その let 式の評価は、その define の時の 1 回だけしか起きない...
ということがわかってないようだから、OKでもなさそうだがとにかく次へ行く。
count に 0 を束縛した状態で、
(lambda () (set! count (+ count 1)) count) を評価したものが make-counter になるわけだけど、
その lambda を評価すると「count を束縛した状態」というものを抱え込んだもの(閉包)に
なって、それを毎回実行するので、カウントが増えていくわけ。
0297デフォルトの名無しさん
2014/11/13(木) 23:41:29.45ID:sU4LwNdCいまさらながら、ちょっと怖い
0298デフォルトの名無しさん
2014/11/14(金) 00:00:58.17ID:O6F2cfMEと言いたいところだけど、まあクロージャ、環境モデルなどの語句でググれば大体わかる
そのコードで肝なのはletで包んだlambdaである点ね
lambdaってのは外側の環境を含んだ関数を返すの
この環境というのは大雑把にいえば、レキシカルスコープ上でどんな変数が参照できてどういう束縛なのかの情報みたいなものね
だから(make-counter)を評価したらletで作られた環境付きの関数が返ってくる
(define make-counter2 (lambda () (let ((count 0)) (set! count (+ count 1)) count)))として
(define counter1 (make-counter))
(define counter2 (make-counter2))
としてcounter1とcounter2の挙動を比較してみたり、二つの環境モデルを実際に図で書いてみたりすると理解できる、かも
0299デフォルトの名無しさん
2014/11/14(金) 00:01:35.95ID:vIy4QCcC0300293
2014/11/14(金) 00:05:20.05ID:kOXdBNfv>>296
>んで、その let 式の評価は、その define の時の 1 回だけしか起きない...
ということがわかってないようだから、OKでもなさそうだがとにかく次へ行く。
そうですそこが分からないです・・・
0301デフォルトの名無しさん
2014/11/14(金) 00:07:53.68ID:bBfVN72A(let ((count 0))
(lambda () (set! count (+ count 1)) count))
こうでもしないと思ってるような動きはしないような...
0302デフォルトの名無しさん
2014/11/14(金) 00:10:49.42ID:OZzSNTvY(define make-counter2 (lambda () (let ((count 0)) (set! count (+ count 1)) count)))
で、
(make-counter)
(make-counter2)
の挙動を比較してみたらってことですね、ごめん
0303デフォルトの名無しさん
2014/11/14(金) 00:19:19.42ID:qCbHalO30304デフォルトの名無しさん
2014/11/14(金) 00:30:09.41ID:bBfVN72A0305デフォルトの名無しさん
2014/11/14(金) 00:30:14.36ID:OZzSNTvY> (make-counter)を評価したら
は
> make-counterはletで作られた環境付きの関数に束縛されてる
と読み替えてね
>>303
まともな処理系ならクロージャ自身の束縛がなくなった時点でまとめてGCされると思う
0306デフォルトの名無しさん
2014/11/14(金) 00:44:44.18ID:0NdzO4Gjまず、
(define (f x y) (+ x y)) みたいな記法は簡便だから多用されるけど、実は、
(define f (lambda (x y) (+ x y))) の略記法だという点に注意。
で、
(define ver expr) みたいに書くと、exprを評価した値をverの値にする、と。
上のような普通の関数定義は、下の略してない記法を見れば分かるけど、
一番上に剥き出しで lambda があるわけだ。
んで、近代以降のLisp(Common LispとかScheme)は、lambda を評価すると、
手続きだけじゃなくて、その時の環境(変数名→値、という束縛の集まり)も
抱え込んだ「閉包」というものになる。
つまり、letの中にあるlambdaは、そのletによる束縛ごと、手続きになるわけ。
(let over lambdaというそのものズバリのタイトルの本があるが、まだ今読むのは
難しすぎると思う)。
(define foo (let ((x 0)) (cons (lambda () (set! x (+ x 1)) x)
(lambda () (set! x (- x 1)) x) )))
foo
gosh> (car foo)
#<closure foo>
gosh> (cdr foo)
#<closure foo>
これで
((car foo)) とか ((cdr foo)) とかを評価して観察してみる
0307デフォルトの名無しさん
2014/11/14(金) 01:57:56.37ID:vIy4QCcCカウンター関数とかじゃなくてdisplayとかもっと初心者にわかりやすいやつ使ったらいいのに
0308デフォルトの名無しさん
2014/11/14(金) 07:22:19.77ID:anfjtx4T(let ((s 'jiro))
(lambda (c)
(cond ((eq? c 'fight) (set! s 'kikaider))
((eq? c 'normal) (set! s 'jiro))
((eq? c 'state) (display s))))))
0309デフォルトの名無しさん
2014/11/14(金) 07:38:43.01ID:anfjtx4T((lambda(s)
(lambda (c)
(cond ((eq? c 'fight) (set! s 'kikaider))
((eq? c 'normal) (set! s 'jiro))
((eq? c 'state) (display s)))))
'jiro))
これと等価で、最初のlambdaがsをもつ環境を作り、2番目のlambdaはクロージャとして
その環境を保持している。
0310デフォルトの名無しさん
2014/11/14(金) 13:14:24.84ID:XSSheCrx皆さんありがとうございます、なんとなく使い方が分かりました
0311デフォルトの名無しさん
2014/11/14(金) 17:31:14.47ID:i/qlCtxO(setf (symbol-function 'counter)
(let ((count 0))
(lambda () (incf count))))
sbcl には fset が無いみたいなのでマクロ?を使ってみたのがこれ↓
(defmacro fset (sym clj)
`(setf (symbol-function ',sym) ,clj))
(fset counter
(let ((count 0))
(lambda () (incf count))))
lisp は初めてなんで、よーワカらん…
0312デフォルトの名無しさん
2014/11/14(金) 17:40:26.28ID:4+06Yvxk(defun counter () (let ((count 0)) (lambda () (incf count))))
counterが返すクロージャをfset使うのは便利だけど
(fset 'f (counter))
(f) => 1
(f) => 2
0313デフォルトの名無しさん
2014/11/14(金) 18:10:22.59ID:1eTt6dGMデフン?
0314デフォルトの名無しさん
2014/11/14(金) 18:14:51.39ID:0NdzO4Gj0315デフォルトの名無しさん
2014/11/14(金) 18:29:55.52ID:i/qlCtxOなるほど、どうもありがとう
ところでカウンタの値をリセットしたり、インクリメントさせずに
クロージャ内部のcountの値を取ってくるにはどうしたらいいだろう?
(f) => 2
(reset-counter 'f)
(f) => 1
(f) => 2
(get-count 'f) => 2
(f) => 3
0316デフォルトの名無しさん
2014/11/14(金) 18:44:20.31ID:OZzSNTvY(defun counter ()
(let ((c 0))
(lambda (&optional message)
(ecase message
((nil) (incf c))
(:reset (setf c 0))
(:get c)))))
(setf (symbol-function 'f) (counter))
(f)
(f :reset)
(f :get)
0317デフォルトの名無しさん
2014/11/14(金) 18:48:27.10ID:i/qlCtxO�d、素晴らしい
0318デフォルトの名無しさん
2014/11/14(金) 19:11:34.02ID:4+06Yvxk0319デフォルトの名無しさん
2014/11/14(金) 20:43:27.88ID:2IEK62nJ処理系でジャンプテーブルに変換でもしてくれないと遅くて使ってられん
0320デフォルトの名無しさん
2014/11/14(金) 21:03:06.69ID:GjdWj6fq0321デフォルトの名無しさん
2014/11/15(土) 01:29:50.18ID:Y7mCZzKU(define 1mycons (lambda (a d)
(lambda (mes) (case mes
((car) a)
((cdr) d)
((scar) (lambda (v) (set! a v)))
((scdr) (lambda (v) (set! d v)))
((type) 'pair)))))
(define 1mycar (lambda (rec) (rec 'car)))
(define 1mycdr (lambda (rec) (rec 'cdr)))
(define 1myset-car! (lambda (rec arg) ((rec 'scar) arg)))
(define 1myset-cdr! (lambda (rec arg) ((rec 'scdr) arg)))
(define 1mypair? (lambda (rec) (eq? (rec 'type) 'pair)))
(define 2mycons (lambda (a d)
(lambda (mes)
(mes a d (lambda (v) (set! a v)) (lambda (v) (set! d v)) 'pair))))
(define 2mycar (lambda (rec) (rec (lambda (ar dr aw dw ty) ar))))
(define 2mycdr (lambda (rec) (rec (lambda (ar dr aw dw ty) dr))))
(define 2myset-car! (lambda (rec v) (rec (lambda (ar dr aw ty) (aw v)))))
(define 2myset-cdr! (lambda (rec v) (rec (lambda (ar dr aw ty) (dw v)))))
(define 2mypair? (lambda (rec) (rec (lambda (ar dr aw dw ty) (eq? ty 'pair)))))
0322デフォルトの名無しさん
2014/11/15(土) 08:25:59.63ID:mZUmkatx0323デフォルトの名無しさん
2014/11/15(土) 09:15:57.16ID:mqciZrYAreplでボトムアップスタイルが楽。
0324デフォルトの名無しさん
2014/11/15(土) 09:31:44.54ID:mqciZrYAいまいち部品の部品から育ててる感触にならない。
0325デフォルトの名無しさん
2014/11/15(土) 10:59:17.47ID:Jt7ZjAVW試行錯誤しながら整理することに利用している。REPLによる対話環境はその点で便利。
0326デフォルトの名無しさん
2014/11/15(土) 12:09:22.79ID:opC/w3mn0327デフォルトの名無しさん
2014/11/15(土) 13:11:31.14ID:E69iLJ1U一応出来るんだけどなんかしっくりこない
0328デフォルトの名無しさん
2014/11/15(土) 14:46:12.46ID:HZ2lm6V20329デフォルトの名無しさん
2014/11/15(土) 16:39:04.18ID:go3L+9fV事前準備がjvmとleinスクリプトだけで済むからどこでもたいてい使える。
出先の会社でインストール厳しいところでもjvmまではアリだったりするから。jarベースで起動できるスクリプトまでは通るし、clojure込みでjarに固めてあればrepl起動していろいろできるから。
インストール厳しいところでexe申請だともうどうもならん様なところとかでもなんとかなる。
0330デフォルトの名無しさん
2014/11/15(土) 16:41:53.57ID:2sYNTMQS0331デフォルトの名無しさん
2014/11/15(土) 17:03:25.75ID:go3L+9fV自分が一番つらかったのはpowershell無しのwindows環境ですcmdはきつい
unix系OSを開発に使ってるところだとjvm無しはなかったです。
なおエディタがnotepad.exeだけってところもありましたよ(二度と仕事したくない)
0332デフォルトの名無しさん
2014/11/15(土) 17:04:41.60ID:go3L+9fV0333デフォルトの名無しさん
2014/11/15(土) 17:20:04.70ID:2sYNTMQSいけないトコが面倒臭かったなぁ…まぁ、Java 8 で lambda 式がやっと
入ったんで sort に限らず色々と楽になったからいいけど
0334デフォルトの名無しさん
2014/11/15(土) 18:06:27.96ID:De01Q5YA昔はそう思ってたけど、もっと広く自分が仕様を固められてないぐらいから使える
内側のS式を常に動かて、試行錯誤しつつ、仕様が徐々に固まっていく方法が取れる
頭だけで事前に計画するより、ずっと早く適切に書ける
グレアムが画家のキャンバスや思考の道具発言の意味がやっと理解できた
考えてから書くのでなく、考える時にいじりまわしてる道具
高い表現力も、余計な事を分離して、思考の邪魔にならないように
0335デフォルトの名無しさん
2014/11/15(土) 18:09:18.29ID:VFt6Efys0336デフォルトの名無しさん
2014/11/19(水) 06:22:24.13ID:BdNjB3zo0337デフォルトの名無しさん
2014/11/21(金) 12:05:52.96ID:25M9iUJl0338デフォルトの名無しさん
2014/11/21(金) 12:33:32.38ID:OCrSR/1K日本限定駄洒落系処理系作りたくなるからやめれwwww
0339デフォルトの名無しさん
2014/11/21(金) 21:46:16.13ID:8nypL9of0340デフォルトの名無しさん
2014/11/22(土) 01:43:19.59ID:Lcg9HbgIサンプルを動かしてみてもフリーズしてしまいます
試しに他言語からGLFW3を叩いたところ問題なく動いたのでcl-glfw3固有の問題だと思うのですが
0341デフォルトの名無しさん
2014/11/23(日) 01:23:43.92ID:QSlTVfZVまずうちでは macports を使ってるのでライブラリをsudo port install glfw として入れた。
sbclを起動して (ql:quickload 'cl-glfw3) とやったら、
ライブラリが認識されずにデバッガが起動したので、
USE-VALUE → ("/opt/local/lib/libglfw.dylib") としてやった。
で(ql:quickload 'cl-glfw3-examples) して
(cl-glfw3-examples:basic-window-example) と
(cl-glfw3-examples:events-example) を試してみた。どちらも動いているように見える。
多分、ccl を使ってるんじゃなかろうか。うちの環境でも ccl だとフリーズした。
確か opengl系の他のライブラリとか、あと lispbuilder-sdl というライブラリでも似たような問題があったはず。
ccl が中で使ってる Cocoa のスレッド安全性の問題がどうとかでうまく動かないらしい。
なんとか ccl を使いたい場合は lispbuilder-sdl の本家
https://code.google.com/p/lispbuilder/wiki/DownloadInstallationIntro
にもちょっと書いてあるように、 ccl の single-threaded-build を使う必要がある。
これは quicklisp にもある single-threaded-ccl というパッケージで作れるが、
もしIDEにslimeを使ってるなら相性が良くないのでおすすめしない(sbclを使えば良いと思う)。
0342デフォルトの名無しさん
2014/11/23(日) 01:25:25.79ID:QSlTVfZV0343デフォルトの名無しさん
2014/11/23(日) 02:47:53.06ID:RSaXyLxZsbclを入れて使ってみたところ上手く動いてそうだったのでこっちで試してみようと思います
ありがとうございました
0344デフォルトの名無しさん
2014/11/24(月) 03:40:40.57ID:CJEO4y380345デフォルトの名無しさん
2014/11/24(月) 07:44:21.42ID:8Acoy1KJ「この世のゴミ」というのはあまりにも失礼だろう。
浮世離れした人たちなのは確かだろうけど
0346デフォルトの名無しさん
2014/11/24(月) 07:54:36.54ID:sEfL4Txjおれはlisperだから関係ないけど
0347デフォルトの名無しさん
2014/11/24(月) 10:14:12.30ID:rMClEZSFエヘヘ
0348デフォルトの名無しさん
2014/11/24(月) 10:14:59.63ID:rMClEZSFカワイィよおゥ!
エヘヘ
0349デフォルトの名無しさん
2014/11/24(月) 13:22:39.10ID:4Y/TQv8X0350デフォルトの名無しさん
2014/11/24(月) 14:22:18.12ID:eZk/JDId0351デフォルトの名無しさん
2014/11/24(月) 14:37:09.17ID:/I9QN6kR0352デフォルトの名無しさん
2014/11/24(月) 14:41:05.02ID:eZk/JDId0353デフォルトの名無しさん
2014/11/24(月) 14:42:39.72ID:eZk/JDId死じゃなくて存在自体消されてるはず
0354デフォルトの名無しさん
2014/11/24(月) 14:45:24.73ID:/I9QN6kR0355デフォルトの名無しさん
2014/11/24(月) 14:46:47.35ID:eZk/JDId0356デフォルトの名無しさん
2014/11/24(月) 16:57:43.95ID:ScNxOBXo0357デフォルトの名無しさん
2014/11/24(月) 18:02:36.80ID:3cGvLtNK発見現場で?
0358デフォルトの名無しさん
2014/11/24(月) 18:23:45.73ID:Gqcq9WvC餓死した人の言葉だよ、それ
0359デフォルトの名無しさん
2014/11/24(月) 18:46:04.12ID:/I9QN6kR0360デフォルトの名無しさん
2014/11/24(月) 22:34:47.65ID:HlxVQOol0361デフォルトの名無しさん
2014/11/24(月) 22:35:50.30ID:n8voiuRi0362デフォルトの名無しさん
2014/11/24(月) 23:07:20.31ID:sHaIAKeh0363デフォルトの名無しさん
2014/11/24(月) 23:20:23.49ID:94LY/waD「あんたがいつまでも弱参照にしてるからでしょうが!」
0364デフォルトの名無しさん
2014/11/25(火) 00:10:16.04ID:Y2tVIh8o0365デフォルトの名無しさん
2014/11/25(火) 00:15:07.85ID:A7BBHD380366デフォルトの名無しさん
2014/11/25(火) 00:18:44.93ID:Y2tVIh8oこのスレは監視対象だな。
0367デフォルトの名無しさん
2014/11/25(火) 02:56:18.48ID:xG1c8sBU0368デフォルトの名無しさん
2014/11/25(火) 08:00:49.45ID:D/zVPXED0369デフォルトの名無しさん
2014/11/25(火) 08:43:14.42ID:Y2kTihH90370デフォルトの名無しさん
2014/11/26(水) 22:37:30.40ID:E9zco5kUそもそも彼らが不法入国した日本列島はアメリカだしな…
0371デフォルトの名無しさん
2014/11/27(木) 03:31:02.92ID:ul68CLMkメモリに優しいですー
0372デフォルトの名無しさん
2014/11/28(金) 04:06:38.16ID:X9B4zpDK0373デフォルトの名無しさん
2014/11/28(金) 05:04:56.14ID:sI7uQd7I0374デフォルトの名無しさん
2014/11/28(金) 05:49:38.19ID:mpzFKch70375デフォルトの名無しさん
2014/11/28(金) 07:58:20.26ID:zPjqkHsA0376デフォルトの名無しさん
2014/11/28(金) 08:53:53.47ID:FEzYCeOn0377デフォルトの名無しさん
2014/11/28(金) 10:11:39.79ID:9LmqPqsR本当か?じゃ、俺はどうだ?
0379デフォルトの名無しさん
2014/11/28(金) 23:46:56.99ID:SjP4KMTN/⌒ヽフ
/ rノ
OO_)
***ゔぉぉぉぉぉえ!!
ゲロゲロゲェ――!!!!
 ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄
ぅぉぇっぷ
/⌒ヽフ
/ rノ
OO_);゚。o;,
ぅ゙ぉぇぇぇ
∧_∧
〃 (|i´r`)
/ つ ィ;゚;δ゚,
⊂こ_)_);:゚。o;:゚。
,;;。:;゚。o,
ビチョビチョ
0380デフォルトの名無しさん
2014/11/29(土) 02:27:59.22ID:xkdYAp4d0381デフォルトの名無しさん
2014/11/29(土) 14:37:08.46ID:+LKz1QlSなんでCL仲間はずれにするのん?
0382デフォルトの名無しさん
2014/11/30(日) 20:01:28.37ID:tVFfE2xZ変換後のコードをCにするかllvmにするか迷ってるんだけどなにか大きな違いある?
主に学習目的で
0383デフォルトの名無しさん
2014/11/30(日) 20:22:19.78ID:4ibMOZ4yCにすると変換系を作り手や関係者が視認しやすいけど
LLVMまで落としちゃうと関われる人が減るってだけな感じ。
作者がLLVMでも問題無いって感じるならCにする意味無いはず。
0384デフォルトの名無しさん
2014/11/30(日) 20:37:08.21ID:9j00GH/dLLVM がサポートしてないアーキテクチャへの移植が楽ということは有り得るかも。
0385デフォルトの名無しさん
2014/11/30(日) 21:17:52.80ID:MoGBaFHcいまなら断然llvmだと思う。
前に数理システムの人がレポート書いてたけど、今時のlispでも共通部分式の除去すらやってない。早いlisp書いてくれ。
0386デフォルトの名無しさん
2014/11/30(日) 21:24:05.28ID:roSgavVBとりあえずGC本消化してドラゴンブック舐めてから考える
0387デフォルトの名無しさん
2014/11/30(日) 23:13:32.37ID:8lFnY/7Z仮に最新のコンパイラ技術が投入できたとしてナンボほど速くなるのかだが,
劇的に速くなるようには思えない .
具体的にどれだけ速くなるのよ.
0388デフォルトの名無しさん
2014/12/01(月) 10:31:46.65ID:oEpuqve5ということを書いてるので、それ読んでみればだいたい見積もれる。
0389デフォルトの名無しさん
2014/12/01(月) 17:58:29.60ID:+y+TG/gNcl-www.msi.co.jp/solutions/knowledge/lisp-world/tutorial/compiler-eval.pdf
0390デフォルトの名無しさん
2014/12/01(月) 18:04:24.08ID:+y+TG/gNどっちにするか決めるのを先送りに出来るのか
0391デフォルトの名無しさん
2014/12/01(月) 23:09:01.28ID:PTMqD4FO0392デフォルトの名無しさん
2014/12/01(月) 23:27:45.20ID:VqGzYVuf0393デフォルトの名無しさん
2014/12/01(月) 23:38:35.23ID:GZ6n/7wyLisp 的な開発手順とのトレードオフがある話なんだよな。
0394デフォルトの名無しさん
2014/12/01(月) 23:52:14.95ID:TRt33dR60395デフォルトの名無しさん
2014/12/02(火) 00:22:18.96ID:ElFoAaYoただ、そのためのコストと最適化の効果を天秤にかけたとき割に合うのがどこかっていうのは繊細な微調整が必要だし状況によるので、
かなりややこしくなると思う。
0396デフォルトの名無しさん
2014/12/02(火) 10:52:41.62ID:3rM6YAIj0397デフォルトの名無しさん
2014/12/02(火) 16:25:16.25ID:aOEO6EKE0398デフォルトの名無しさん
2014/12/02(火) 22:51:01.08ID:TkyJwIyD0399デフォルトの名無しさん
2014/12/03(水) 22:30:04.41ID:Xk8uL6pL0400デフォルトの名無しさん
2014/12/04(木) 05:00:28.88ID:0vTQY+f3まず冒頭でLispへの深い愛が語られますが
世の中の多くのエンジニアは不細工なゲテモノとして扱いします
ウンチッチ!
0401デフォルトの名無しさん
2014/12/04(木) 09:42:59.63ID:K7LKSj080402デフォルトの名無しさん
2014/12/04(木) 11:31:09.02ID:so8xg5it0403デフォルトの名無しさん
2014/12/04(木) 13:49:26.86ID:uBagqB+Xでもあの本のCMビデオ結構すき
0404デフォルトの名無しさん
2014/12/04(木) 16:26:08.82ID:dr6t6O940405デフォルトの名無しさん
2014/12/04(木) 16:50:13.43ID:uBagqB+Xttps://www.youtube.com/watch?v=HM1Zb3xmvMc
0406デフォルトの名無しさん
2014/12/04(木) 17:22:27.06ID:XPMz52lF0407デフォルトの名無しさん
2014/12/04(木) 20:39:21.67ID:e632zg1P0408デフォルトの名無しさん
2014/12/05(金) 00:34:01.11ID:7kEgHdgdあれどういう時に使うのか気になってモヤモヤしてる
知ってる人いない?
0409デフォルトの名無しさん
2014/12/05(金) 03:02:29.21ID:4BWzbqMHまあ一般的にはなんかの下請け関数とかで名前が重要じゃないときとかにそんな風にするかね。
0410デフォルトの名無しさん
2014/12/05(金) 16:21:50.47ID:vcTK+gE2そうやって事例を挙げることはできるけど、明確に共通する規則はないと思う。
0411デフォルトの名無しさん
2014/12/05(金) 18:24:02.76ID:Izx+IQ1Iオライリーは、毎回、表紙の生物の解説が裏の方に書いてあるけど、land of lisp には書いてなかった
オライリーは笑いが分かってない
0412デフォルトの名無しさん
2014/12/05(金) 18:36:07.42ID:fJq8ciEr0413デフォルトの名無しさん
2014/12/06(土) 00:26:42.16ID:G2+yAQm/つまりマイナスいち
わかった?
※マジです
0414デフォルトの名無しさん
2014/12/06(土) 00:28:32.34ID:0yBjMk5xマジで?
いまいち信じられないからソース欲しい
0415デフォルトの名無しさん
2014/12/06(土) 07:08:35.06ID:ZvJlqp/D継続もファーストクラスオブジェクトだと聞いて
「継続もシリアライズして渡せるのかすげーな」と思ってたおじさんです
よろしくお願いします
0416デフォルトの名無しさん
2014/12/06(土) 08:17:58.92ID:JL1pKjXv(collectorとして学んだけどcontinuationともいうと書いてあったな)
あれこれしたあとで、あれこれしてきたあとで、これをやれよ
という意味で継続なのかなあ
あれこれして集めまくってから、それから、こらやれろ
はコレクターだなぁ
両方共同じだな
0417デフォルトの名無しさん
2014/12/06(土) 08:25:33.66ID:58PXrMKa(define foo
(lambda l)
(if (null? l) '()
(cons (last l) (foo (butlast l))))))
のコンスも似たようなものにならないのか?
あれこれやってきてから(last l)にそれをコンスしろよ
コラコラ、キスするんじゃない
0418デフォルトの名無しさん
2014/12/06(土) 09:03:08.92ID:dXBvUp0m0419デフォルトの名無しさん
2014/12/06(土) 09:16:39.79ID:uQjdstnN自分が言ってる継続は別の話だからね
継続はcall/ccで取り出せるやつのことな
0420デフォルトの名無しさん
2014/12/06(土) 09:33:20.71ID:uQjdstnN痛めつけられ心が弱っているコーダに
救いの手を差し延べるのがLispなのです
故に初学者は糖質そのものですが
lispほたくさんの))))))))で優しく包み込んでくれます
0421デフォルトの名無しさん
2014/12/06(土) 12:14:51.26ID:q7blqefO0422デフォルトの名無しさん
2014/12/06(土) 13:23:28.05ID:Th4LU2Jgコンピュータの電源をブツ切りしたときに、継続がどうなってるのかモヤモヤする
0423デフォルトの名無しさん
2014/12/06(土) 14:26:35.86ID:1juExYmoシリアライズできるのならそれは丸ごとシリアライズされるだろうから電源切っても平気だと思うyo!
読み出せば参照してる環境もレキシカル変数も手続きも中身全部芋づる式に復元されるはずda!
ファイルとかオープンしてたらどうなってるかはわからないけど
0424デフォルトの名無しさん
2014/12/06(土) 15:42:06.52ID:EShMBgwp日常的には他のスクリプトを使ってしまうんだよね
0425デフォルトの名無しさん
2014/12/06(土) 16:31:13.94ID:JL1pKjXvそのレベルってどういう基準なの?
0426デフォルトの名無しさん
2014/12/06(土) 16:44:50.48ID:vYfcrRSe私家版、Schemeプログラマのレベル10
じゃないの?
ttp://practical-scheme.net/wiliki/wiliki.cgi?Scheme%3ASchemeプログラマのレベル10
0427デフォルトの名無しさん
2014/12/06(土) 16:55:55.20ID:JL1pKjXvサンクス
0428デフォルトの名無しさん
2014/12/06(土) 17:01:30.87ID:JL1pKjXv0429デフォルトの名無しさん
2014/12/07(日) 12:12:52.12ID:mrRmmrII0430デフォルトの名無しさん
2014/12/07(日) 13:37:40.12ID:39n8CS1Kあまり難しく考えないで楽しんだらいいと思う。
信者はマクロや継続のことに拘るかもしれないが、とりあえず受け流しておいていいと思う。
0431デフォルトの名無しさん
2014/12/08(月) 08:18:48.25ID:G7gVbxe9その継続を呼ぶと電源がブツ切りになるんじゃない?
ブツ切りされる原因は変わっても結局そうなる
世界線が収束してしまうんよ
0432デフォルトの名無しさん
2014/12/09(火) 00:14:04.82ID:EEaDhXxghttp://cl-www.msi.co.jp/solutions/knowledge/lisp-world/articles/three-dogmas-of-scheme
0433デフォルトの名無しさん
2014/12/09(火) 05:15:14.92ID:W0TWIhoG0434デフォルトの名無しさん
2014/12/09(火) 05:35:59.40ID:ODpqJ//Pこれ書いた人は頭良くないだろ
可能的推論をそれでしかありえない必然として扱いすぎている
0435デフォルトの名無しさん
2014/12/09(火) 06:21:50.81ID:S/zCqKv60436デフォルトの名無しさん
2014/12/09(火) 06:37:23.35ID:14o7WARY0437デフォルトの名無しさん
2014/12/09(火) 07:42:22.21ID:lF8Ec24S君も頭悪そうだなあ
論調ととらえるか
あらあら
0438デフォルトの名無しさん
2014/12/09(火) 12:17:02.34ID:Gtt0rZVg条件付きのcall/ccの方が実装は軽快になると思う。
しかし、多くのSchemerは反対するだろう。
0439デフォルトの名無しさん
2014/12/09(火) 13:31:50.25ID:UcifULow0440デフォルトの名無しさん
2014/12/09(火) 19:06:46.32ID:Gtt0rZVgR3RSでも既に(call-with-current-continuation proc) essential procedure となってるね。
0441デフォルトの名無しさん
2014/12/09(火) 19:52:03.83ID:UcifULowWinCEのschemeでcall/ec使ってる実装(call/cc無し)があってそれがr3rs準拠だった模様
もうだいぶ前の事なんでうろ覚えですまぬ
0442デフォルトの名無しさん
2014/12/09(火) 22:03:53.75ID:MlF9eZ3uRacketには今でもcall/ecがあるんだね。驚いた。
そういう選択もあったと思うな。
0443デフォルトの名無しさん
2014/12/18(木) 20:43:56.14ID:3M2Q9ZpVマクロ展開にevalを使わないと実装できない気がするんだけどどうしたらいい?
(defmacro nil! (x) (list 'setq x nil))
というマクロがあって
(nil! foo)という式を展開するときに
(list 'setq foo nil)これは本当は
(setq foo nil)になってほしい
ここら変でおかしい事に気付いた
0444デフォルトの名無しさん
2014/12/18(木) 21:33:44.60ID:JhkKaZoWマクロってのはそういうもんです
0445デフォルトの名無しさん
2014/12/18(木) 22:44:07.59ID:kYMKvlss0446デフォルトの名無しさん
2014/12/18(木) 22:51:18.41ID:DAuXzDKB0447デフォルトの名無しさん
2014/12/19(金) 00:29:28.98ID:8jf/i4w+ちょっとなにいってるかわかんない
0448デフォルトの名無しさん
2014/12/19(金) 03:26:43.29ID:upYjIo/Zで、そのマクロ用の言語として Lisp をそのまま流用するのが伝統的マクロのアプローチだけど、
一方で R5RS Scheme みたいにマクロ用の独自言語を用意するというアプローチもある。
>>445
別にマクロ手続きをコンパイルして実行してもいいのよ?
0449デフォルトの名無しさん
2014/12/19(金) 04:04:17.00ID:mNsxWZGv0450デフォルトの名無しさん
2014/12/19(金) 12:56:51.95ID:o138/K/4やっぱり伝統的な方法でやるならevalかインタラクティブなコンパイル処理を用意しないとだめか
副作用の無い関数は展開したいからevalが妥当かな
0451SCHEME餃子 ◆8X2XSCHEME
2014/12/19(金) 16:37:56.84ID:Jd94yde9低水準マクロにどういう方式を採用すべきかで合意できなかったから
不本意ながらとりあえず合意できる範囲でインターフェイスを決めたものであって、
あれが Scheme 的なアプローチってわけじゃないんだよ。
0452デフォルトの名無しさん
2014/12/19(金) 17:06:34.01ID:OgBatUX1Cのプリプロセッサマクロの豪華版
0453デフォルトの名無しさん
2014/12/19(金) 17:54:12.96ID:bX2RZBOL展開器がコンパイラ並みの大きさになっていくのはいかがなものか?
バグのない完全な展開器は現存するのか?
0454デフォルトの名無しさん
2014/12/19(金) 19:51:32.57ID:2wM4VZiRどうやってマクロをデバッグするんだ?
0455デフォルトの名無しさん
2014/12/22(月) 19:02:05.87ID:AjGfN6zSにある
(#0=(a . b) . #0#)
は循環リストではないのでは?
0456デフォルトの名無しさん
2014/12/22(月) 19:17:19.21ID:kX1Hiu3z0457デフォルトの名無しさん
2014/12/22(月) 19:20:13.28ID:j5bAC/Q+0458デフォルトの名無しさん
2014/12/22(月) 19:22:42.01ID:ghZKV2ZQ0459デフォルトの名無しさん
2014/12/23(火) 06:56:15.61ID:7FgN1VNX0460デフォルトの名無しさん
2014/12/23(火) 13:13:19.47ID:+r8FjnMV投稿しないなら予約するなよお
0461デフォルトの名無しさん
2014/12/23(火) 23:21:18.03ID:CZ3D7Ufg0462デフォルトの名無しさん
2014/12/24(水) 00:12:59.43ID:e2VpCcn00463デフォルトの名無しさん
2014/12/25(木) 21:12:53.02ID:X5xaJ3tHctrlは変換無変換に割り当ててるから大丈夫だけどみんなは小指痛くならないの?
0464デフォルトの名無しさん
2014/12/25(木) 21:35:41.32ID:EL6gBj3v0465デフォルトの名無しさん
2014/12/25(木) 21:58:13.43ID:PFMshOy4emacs使ってるならPCの変換とかMacのかなキーを開き括弧にすると良いんじゃ無いの
閉じるのはparedit任せ
つかキーボードの最下段ってなんであんなに不便な割り当てなんだろね?
0466デフォルトの名無しさん
2014/12/25(木) 23:11:25.18ID:CjjuayPAギターとピアノで鍛えてるからか、痛くなったことがない
0467デフォルトの名無しさん
2014/12/25(木) 23:20:06.50ID:bRuwx3hHshiftキーを親指で押せる位置にするのが一番早いかな
paredit便利っぽいけど小指の件とはあまり関係無さそう
0468デフォルトの名無しさん
2014/12/25(木) 23:24:53.41ID:VJozxMYeコントロール+8にすれば?
0469デフォルトの名無しさん
2014/12/26(金) 00:02:19.89ID:sFMmMZhn俺は親指で押してるが根本的な解決とは言いがたい
0470デフォルトの名無しさん
2014/12/26(金) 07:12:03.29ID:ZF5Prlhwなんならギタリストみたいに指の筋トレでもすれば?
0471デフォルトの名無しさん
2014/12/26(金) 07:19:14.79ID:Ymt/Ki/9どうすればうまく使えるか、微調整していくのがいいと思う。enjoy!
0472デフォルトの名無しさん
2014/12/26(金) 11:54:23.23ID:0Z1WSbygてかピアノ弾き多いな
0473デフォルトの名無しさん
2014/12/26(金) 14:48:40.07ID:s2xSvg8vなんで左手の小指は使わん!
0474デフォルトの名無しさん
2014/12/26(金) 19:09:42.71ID:X4m3180hキーのスイッチが押し初めの方に有るキーボードを使って底付きしないように、
指の腹で押す。英語だとtyping injuryでぐぐると一杯情報有るのに
日本語だとこの手の情報あんまりないよね。。。。俺の探し方が悪いのか??
0475デフォルトの名無しさん
2014/12/26(金) 20:21:33.27ID:0m+CPJzh底づきさせてるんじゃないのか?
癖を直すのとクソキーボード変えるべきじゃないのか
0476デフォルトの名無しさん
2014/12/26(金) 20:22:37.55ID:XBzLiayqあっちはタイプライターが結構前から普及してたけど、日本だとその頃は習字が該当するから。
文字書くときの姿勢関係だとペンクラブとかでも話題があるから文化的違いじゃないの?
PC普及でこれから事例が増えるといっぱい出てくる希ガス
0477デフォルトの名無しさん
2014/12/26(金) 20:25:58.68ID:0m+CPJzh俺が教えた学生は全員ブラインド訓練からやらせた
文句言う男子はタコ部屋で俺のために稼がせる
文句言う女子学生は文句言えないようにおれの云々棒で口を塞ぐ
という硬い決意で望んだが、みんな真面目でな
金は入らんし棒は入れられんし
悲しかったなぁ
0478デフォルトの名無しさん
2014/12/26(金) 21:12:39.96ID:U37YhbAO0479デフォルトの名無しさん
2014/12/26(金) 23:10:04.00ID:Dh6fXMBx0480デフォルトの名無しさん
2014/12/26(金) 23:50:50.17ID:GnotqpXf0481デフォルトの名無しさん
2014/12/27(土) 03:56:02.78ID:nu41WR0tわはははは
瑣末君の無駄な書き込み乙
>>478
たかが表現に拘泥するあたり才能のなさを告白してるな
ろくな研究できてないだろ
さてと
ブラインドでカチャカチャやるか
コラコラ、そこの、低能
クチュクチュじゃないからな、ほらほら、中指立てるな
0482デフォルトの名無しさん
2014/12/27(土) 10:31:37.62ID:fnnT6z+r0483デフォルトの名無しさん
2014/12/27(土) 11:22:15.74ID:GT0kNYLG0484デフォルトの名無しさん
2014/12/27(土) 12:03:58.24ID:8H3WtYVY氏ねじゃなくて死ねよゴミカス >>481
0485デフォルトの名無しさん
2014/12/27(土) 12:45:53.81ID:NculZWCDCLの仕様より大きくなるらしいが。
0486デフォルトの名無しさん
2014/12/27(土) 17:56:08.09ID:OOwiOXEM0487デフォルトの名無しさん
2014/12/27(土) 18:33:20.71ID:JqzH5JvrてかISLisp改良して欲しい
0488デフォルトの名無しさん
2014/12/27(土) 20:17:01.39ID:OOwiOXEM0489デフォルトの名無しさん
2014/12/27(土) 21:58:53.06ID:qq52R1C7処理系にはどんどん頑張ってほしいけど
あえて言うなら処理系依存の所を減らしてくれたらいいけど
0490デフォルトの名無しさん
2014/12/27(土) 23:19:17.50ID:8H3WtYVY実装がともなってないと相手にされないことも多い。
(だから実装作れ、超がんがれ、という話になるわけだが)
0491デフォルトの名無しさん
2014/12/27(土) 23:24:01.98ID:kcXcAVhx0492デフォルトの名無しさん
2014/12/27(土) 23:30:07.38ID:qq52R1C70493デフォルトの名無しさん
2014/12/27(土) 23:31:44.97ID:qq52R1C7まあみんなそれくらい作ってるよな
0494デフォルトの名無しさん
2014/12/28(日) 09:07:42.58ID:EmbVcJ4C0495デフォルトの名無しさん
2014/12/28(日) 09:25:51.22ID:GqM4jvZj0496デフォルトの名無しさん
2014/12/28(日) 10:52:27.52ID:uZelGoi1ハノンとかチェルニーとか人生の時間の無駄だから‥インベンションやシンフォニアがおすすめだ
0497デフォルトの名無しさん
2014/12/28(日) 14:21:40.21ID:lDrrlBywこのマクロは (i (f)) => #f , (i f) => #t でいいのか?
(define-syntax i
(syntax-rules ()
((_ c)
(letrec-syntax ((f (syntax-rules () ((_) #t)))
(t (syntax-rules ()
((_ c) (f))
((_ x) #f))))
(t f)))))
0498デフォルトの名無しさん
2014/12/28(日) 18:43:29.49ID:k9mhlpYKいいよ。
0499デフォルトの名無しさん
2014/12/28(日) 19:13:59.16ID:3WT3VAffこれ、定義の3行目のcと6行目のcは別ものとして扱われるはずだから、
(i Y)でYになにをもってきても7行目の((_ x) #f)は適用されんだろ。
結局、常に(i Y) => #t になる。
0500デフォルトの名無しさん
2014/12/28(日) 19:17:22.18ID:6IxIWlMAGun = Kata
0501デフォルトの名無しさん
2014/12/28(日) 19:46:02.03ID:k9mhlpYK別物にはならないよ。 同じだよ。
0502デフォルトの名無しさん
2014/12/28(日) 19:53:47.21ID:AQDitcxr俺も作ったわ w
専用命令込みで
0503499
2014/12/28(日) 20:17:27.76ID:3WT3VAffR5RSのsyntax-rulesの説明を見る限り、
cはパターン変数として扱われるから
7行目のcは3行目のcを参照しないでしょ。
このへん、R6RS及びR7RSで変更されたの?
0504デフォルトの名無しさん
2014/12/28(日) 21:10:05.79ID:9AFaWS8j自分はMoshとGaucheを信用しているのだが、それぞれ結果が異なる。
mosh> (i f)
#t
gosh> (i f)
*** ERROR: unbound variable: f
Stack Trace:
______________
0505499
2014/12/28(日) 23:32:50.46ID:3WT3VAffgaucheのdefine-syntaxってdefine-syntaxを含むマクロが定義できないバグが
あったんやけど、letrec-syntaxでも同じなんじゃないかな。
0506501
2014/12/29(月) 02:10:36.92ID:4HBx8iThパターン変数だが、それによって 7 行目の c が 3 行目の c に対応しないとする理由になると考える理由がわかんないな。
0509デフォルトの名無しさん
2014/12/29(月) 11:35:08.08ID:peqZoxpi0510デフォルトの名無しさん
2014/12/29(月) 12:31:51.57ID:KnCKCoglまったくだ。それでなくても開発者人口が極めて少なく、マンパワーが
不足しているのに、貴重なリソースを健全マクロに注いでいる。
0511デフォルトの名無しさん
2014/12/29(月) 14:42:35.74ID:TA0KsTNu融通が効かないし、純潔でないものは無条件に悪と決めつけてるから、実務では汚染源になる
0512デフォルトの名無しさん
2014/12/29(月) 15:14:25.22ID:LxjJzYoX事前に評価されないようにする定義方法あったよな
ああいうのを取り入れたlisp-2が欲しい
0513デフォルトの名無しさん
2014/12/29(月) 15:47:38.70ID:Ha3wslYM勝手に開発者のモチベーションを共有リソースにするやつがいるんだな
0514デフォルトの名無しさん
2014/12/29(月) 16:42:30.82ID:KnCKCogl気に障ったんなら許してくれ。開発者が完全な衛生的マクロを望み、
ユーザーが渇望しているのなら、それでいいと思う。孤高の人、scheme
0515デフォルトの名無しさん
2014/12/29(月) 20:24:23.96ID:4HBx8iTh既に >>451 で指摘されているけど、 syntax-rules は現時点での妥協でしかないのでこれだけで「衛生的マクロ」を評価すんなよ。
0516デフォルトの名無しさん
2014/12/29(月) 21:39:05.88ID:FaRhf2Lbsyntax-case ってのも妥協の産物なのかい?
0517デフォルトの名無しさん
2014/12/29(月) 22:21:18.33ID:yyaVSOAHシロウト意見だけど、これだけ何十年も決まらない、って衛生的マクロのアイディアに何処かに根本的な無理があるんじゃないの?
第1級の継続より限定継続の方が現実的、なみたいにさ。
それとも議論を尽くせばそのうち決まるものなのかな。
0518デフォルトの名無しさん
2014/12/30(火) 02:28:17.65ID:dHN2E2Y1Yes。
底レベルで何をやってるかを隠していきなり高水準な機能を与えてる。
底レベルでの処理にどんなモデルを採用するかをうやむやにした結果。
0519デフォルトの名無しさん
2014/12/30(火) 02:50:07.82ID:dHN2E2Y1マクロに限らずまだまだまだまだ決まってないことだらけじゃないか。
そんでもって、そもそも決めなきゃならないのかっていう議論さえときどき出てくる。
仕様にしてしまうことで実装を縛るのを嫌がってるんだよ。
それでも、どうしても決まってしまったものが仕様になる。
Schemeってそういうものだろ。 単に方針の違い。
0520デフォルトの名無しさん
2014/12/30(火) 03:18:27.54ID:pTIn0EX10521デフォルトの名無しさん
2014/12/30(火) 08:09:57.76ID:2a7COvxLフルの継続は実装としては興味深いが、ユーザーとしては使いにくいな。
仕様を限定して実装を軽くしてやった方が使い道があるだろうと思う。
0522デフォルトの名無しさん
2014/12/30(火) 08:27:20.30ID:qF0mG1f3左腕がサイコガンか何かなのか?
0523デフォルトの名無しさん
2014/12/30(火) 14:22:27.11ID:dHN2E2Y1そりゃ逆だろう。 実装は面倒くさいがユーザーとしてはフルの方がわかりやすいよ。
継続が一回しか呼出されないとか、範囲が限定されているとかいうのはプログラムから読み取って処理系が最適化を頑張って欲しい。
ユーザーには制限が見えない方がいい。
0524デフォルトの名無しさん
2014/12/30(火) 14:32:13.09ID:3v7rngRa0525デフォルトの名無しさん
2014/12/30(火) 14:46:07.77ID:2a7COvxL昔のcall/ec程度で十分だと思うがなぁ。
CLの黒田さんにもフルの継続の問題点が指摘されている。
0526デフォルトの名無しさん
2014/12/30(火) 14:57:18.11ID:2a7COvxLDybvig先生?
0527デフォルトの名無しさん
2014/12/30(火) 15:38:37.11ID:dHN2E2Y1「十分」って誰基準よー。
そういう考え方やめろよ。
制限を排除していくのがSchemeの大綱だろ。
0528デフォルトの名無しさん
2014/12/30(火) 15:57:42.62ID:ZsdhomO+大綱? それ、どこに書いてあるんだ?
0529デフォルトの名無しさん
2014/12/30(火) 16:02:52.74ID:dHN2E2Y1Introduction
0530デフォルトの名無しさん
2014/12/30(火) 16:18:00.44ID:ZsdhomO+そこまでは書いてないと思うが。
でもそう考えているschemerは多いんだろうな。
0531デフォルトの名無しさん
2014/12/30(火) 16:19:04.99ID:3v7rngRaProgramming languages should be designed not by piling feature on top of feature,
but by removing the weaknesses and restrictions that make additional features appear necessary.
必要な機能を追加するのではなく、その機能が必要になるような弱点や制限を取り除くべき
0532デフォルトの名無しさん
2014/12/30(火) 16:27:33.04ID:vs+COFUK0533デフォルトの名無しさん
2014/12/30(火) 16:30:38.38ID:+7B8jKAW0534デフォルトの名無しさん
2014/12/30(火) 16:36:36.26ID:3v7rngRa0535デフォルトの名無しさん
2014/12/30(火) 16:40:20.02ID:dHN2E2Y1明記はされていないものの、Scheme的には表現力を重視していると思う。
だからといって遅すぎてもよいというわけでもないのでそこらへんはバランスを取りながらということで。
0536デフォルトの名無しさん
2014/12/30(火) 18:40:08.70ID:ZsdhomO+https://gist.github.com/SaitoAtsushi/8784203
動かない。
0537デフォルトの名無しさん
2014/12/30(火) 19:10:19.18ID:ZsdhomO+効率、めっちゃ悪そうだけど。
0538デフォルトの名無しさん
2014/12/30(火) 19:52:37.92ID:dHN2E2Y1car や cdr を使ってるからか?
(scheme base) に car や cdr は含まれてるので、 (scheme cxr) を import しなけりゃ動かないというのなら処理系 (が持つライブラリ) の方が間違ってると思う。
0539デフォルトの名無しさん
2014/12/30(火) 19:55:15.74ID:dHN2E2Y1それはちょっと古いやつ。
こっちの方が本格的になってる。
https://github.com/SaitoAtsushi/pattern-match-lambda
0540デフォルトの名無しさん
2014/12/30(火) 20:01:55.94ID:ZsdhomO+ああ、そうなのか。妙な構成にしておくんだな。
0541デフォルトの名無しさん
2014/12/30(火) 20:18:52.16ID:ZsdhomO+実用性はともかくマクロ展開期のテストにはいいな。
動かない処理系、けっこうあるんじゃないか?
0542デフォルトの名無しさん
2014/12/30(火) 20:59:02.98ID:ZsdhomO+GaucheのR7RSモードで試してみたが、全然、動かないぞ。
0543デフォルトの名無しさん
2014/12/30(火) 21:07:29.63ID:dHN2E2Y1known issue。
マクロでマクロを生成する系のマクロはR5RSの頃からGaucheでは動かないことがあったよ。
今のheadではexplicit renamingが実装されていて、それを元に展開器がSchemeで書き直される予定があるよ。
次のリリースで修正されるか、間に合わなければその次のリリースになるとのこと。
0544デフォルトの名無しさん
2014/12/30(火) 21:09:36.95ID:ZsdhomO+了解
0545デフォルトの名無しさん
2014/12/30(火) 21:30:59.76ID:vs+COFUK仕様が難しいの?それとも曖昧なの?
0546デフォルトの名無しさん
2014/12/30(火) 21:34:43.84ID:ZsdhomO+オレの理解では仕様がダメダメ。Gaucheでさえバグがなくならないんだぜ。
0547デフォルトの名無しさん
2014/12/30(火) 21:40:40.95ID:dHN2E2Y1リソース不足。
たまにコントリビュートありつつもひとりでやってることが多いから細かなミスが残る。
そして有名どころの展開器を使わずにあえて自分で一から書いたりするのでなおさらそうなる。
比較的大きなコミュニティを持っているguile、racket、chickenではそれほど問題ない。
さすがにR6RSでは自前でマクロ展開器を書いてない方が多かったみたいだけど。
0548デフォルトの名無しさん
2014/12/30(火) 22:07:43.30ID:vs+COFUKthx。マクロの仕様がかなり複雑で乏しいリソースじゃなかなか作りきれない、と理解した。
CLから見てると、なんでマクロ展開なんてとっくに実用になってることを、
そんな難しい問題にしてるかイマイチ、理解できないんだけど…。
自分で実装しなきゃ分からないんだろうなぁ。
0549デフォルトの名無しさん
2014/12/30(火) 22:12:35.42ID:rbuEeUewていうか何するマクロなのか読んでもさっぱり
0550デフォルトの名無しさん
2014/12/30(火) 22:23:04.37ID:dHN2E2Y1CLのマクロ(いわゆる伝統的マクロ)は
・健全性の確保をユーザにゆだねている (gensymを使うという規約をユーザが守らなければいけない)
・完全に健全にならない部分がある
・フェイズ(リード時とマクロ展開時とコンパイル時と実行時)がごちゃまぜでよくわからん
という問題があって、しかし「それを注意さえすれば特に問題にならないからいいや」というスタンス。
Schemeとしては「いやいや、そういうわけにいかんし」という感じ。
どちらもメリットとデメリットはあるからどっちを取るかというのは文化の違いとしか言い様がないな。
0551デフォルトの名無しさん
2014/12/30(火) 22:26:55.23ID:2qTBXEqIそのせいで伝統的な方法のマクロだとlisp-2以上に気を付けなくならなくなった
だから衛生的マクロが必要になったけど複雑さとリソース不足のせいで何十年もかけてるのにまだちゃんと決まってない
最大の原因はlisp-1だろ
0552デフォルトの名無しさん
2014/12/30(火) 22:35:25.45ID:dHN2E2Y1仕様そのものがどうこうよりも単にScheme業界の気質だと思うぞ。
一旦決めてもそもそも論が出てきて覆るし。
0553デフォルトの名無しさん
2014/12/30(火) 22:50:13.64ID:ZsdhomO+そうなんだよ。さっさとマクロの問題を片付けて他のことをやればいいと思うんだが。
教条主義的なところがあって自縄自縛になってるかもな。
それと開発者自身がそれを楽しんでいるという雰囲気もある。
0554デフォルトの名無しさん
2014/12/30(火) 23:03:54.14ID:dHN2E2Y1要はいくらでも後付けできる話なので、そうじゃない「言語のコア」として議論すべきこととしてはもうそんなにないんだよ。
強いて言えばリードマクロとかの話になるが…、それはそれでマクロ以上に決まらないだろうしな。
0555デフォルトの名無しさん
2014/12/31(水) 05:07:33.93ID:J6sYEaZuCLのマクロはマクロ展開時に展開される。
展開時に必要な手続が動かなければ展開に失敗するというだけのこと。
マクロに固有の問題じゃない。よくわからんのは単にフェイズがわからんってこと。
0556デフォルトの名無しさん
2014/12/31(水) 10:09:38.80ID:YVAw9wDS0557デフォルトの名無しさん
2014/12/31(水) 20:36:28.88ID:WNT3VYT+0558デフォルトの名無しさん
2014/12/31(水) 21:21:01.80ID:ByR1SHSU健全マクロはリスト操作を避ける仕組みそのものだし
S式を捨てたいって思想が透けて見えるよ
0559デフォルトの名無しさん
2014/12/31(水) 21:44:12.81ID:WNT3VYT+何度も同じことを書いてるけど、
現在の syntax-rules の仕組は下層でどのようなモデルを使うかを隠した高水準のものだから、
それを衛生的マクロ一般と混同するな。 するな。 するな。
大事なことなので三度言いました。
0560デフォルトの名無しさん
2014/12/31(水) 21:58:56.47ID:1YJtVTFI0561デフォルトの名無しさん
2014/12/31(水) 22:04:24.91ID:wcjP10W3それが実現できたらACMチューリング賞ものだと思う。がんばってくれ。
0562デフォルトの名無しさん
2014/12/31(水) 22:11:46.81ID:wcjP10W3定義時と実行時という時間が異なる空間でシンボルの唯一性を保証せよという
問題と考えられる。
0563デフォルトの名無しさん
2014/12/31(水) 22:12:34.07ID:WNT3VYT+シンボルをリネームするという形なのでS式の世界だけで考えることは出来る…
…んだけど、マクロ使用箇所の「外側」もリネームする必要がある場合もあって、
文脈を理解した変換が必要なのでマクロ展開器をコンパイラと上手く分離するのは難しいかも。
コンパイラとマクロ展開器をどれくらい分離するかというのは色んなアプローチがあるってshiroさんが言ってた。
0564デフォルトの名無しさん
2014/12/31(水) 22:40:33.52ID:+j7c76Kh自動gensymがうまくいくと思うのは安直かな
0565デフォルトの名無しさん
2014/12/31(水) 22:50:29.37ID:WNT3VYT+0566デフォルトの名無しさん
2014/12/31(水) 23:04:15.19ID:geaLZRSJ0567デフォルトの名無しさん
2014/12/31(水) 23:28:09.90ID:+j7c76Kh0568デフォルトの名無しさん
2014/12/31(水) 23:29:11.83ID:Z+SsAvdG一方でlisp-2にしてパッケージつけてCLみたくフェーズ分けすれば終わりだろ、とも思う。
>>566
マクロ止めるならS式は単なる風変わりな記法に過ぎなくなるけどいいの?
0569デフォルトの名無しさん
2014/12/31(水) 23:41:00.19ID:wcjP10W3α変換?
0570デフォルトの名無しさん
2014/12/31(水) 23:43:27.13ID:geaLZRSJ0571デフォルトの名無しさん
2015/01/01(木) 00:37:17.60ID:1QKDEEDD数式は再帰構造だからね。S式はマクロのためだけでもないと思うよ。
0572デフォルトの名無しさん
2015/01/01(木) 01:05:56.25ID:BLuAa79yやめてどうすんの?
なんか話題があるならお前が出せよ。
0573デフォルトの名無しさん
2015/01/01(木) 01:40:56.38ID:G08WKQSM一般論としては続ける側が面白い話をすべきだと思うよ?
0574デフォルトの名無しさん
2015/01/01(木) 01:57:49.60ID:BLuAa79y面白いと思って話をしてると思うんだが、お前が面白くないと思うならお前が面白くするのが筋だろ。
0575デフォルトの名無しさん
2015/01/01(木) 02:33:03.13ID:0pQWBz9iそれよりもその先のコンパイル段階でやるような項書き換えの方に興味ある
マクロ展開して((lambda (+ x y))1 2)みたいな無駄な適用式を(+ 1 2)に変換するみたいなやつね
この場合両方とも定数だから単なる畳み込みだけど
0576デフォルトの名無しさん
2015/01/01(木) 05:11:40.10ID:BLuAa79yそういうのって適用できるパターンを大量に持っておくしかないんじゃないの。
置換えパターンをユーザが定義可能にするという方法もあるけど…。
それ Common Lisp のコンパイラマクロだし。
http://www.lispworks.com/documentation/HyperSpec/Body/m_define.htm
Haskell なんかだとそうとう豪快な変換をすると聞くけど、
動的型な Lisp ではどんな値を受取るか事前に何の保証もないので、
現実にはこういう泥臭い方法になってしまう。
理論家から見たらこれひどい仕組に見えるんじゃなかろうか。
0577デフォルトの名無しさん
2015/01/01(木) 13:00:24.57ID:kfvwaXN/0578デフォルトの名無しさん
2015/01/01(木) 17:15:43.61ID:U5ycMGNA0579デフォルトの名無しさん
2015/01/01(木) 21:21:12.94ID:BLuAa79y展開のタイミングの話じゃなくて、そのときに見える「環境」について。
R6RS ではライブラリ単位でメタレベルという名の指定を与えてそれを元に分離された環境を作る。
マクロ展開時に見える環境と実行時に見える環境は別物。
でも R6RS 処理系の中でもいくつかのアプローチにわかれてる。
まずひとつは明確に分離せずうやむやにしているタイプ。 実装をあまり読んでないけど sagittarius はこのタイプだと思う。
ふたつめはユーザのメタレベル指定に厳密に従って環境を分離するタイプ。 Larceny などはこれ。
みっつめは環境は分離するがメタレベル指定によってではなくプログラムの内容を見て自動的に決定する方法 (implicit phasing) 。 Chez とかはこのタイプ。
R6RS はメタレベルの解釈について厳密な定義を与えているものの、
レベルの不整合を受入れるような実装があってもよいという逃げ道も書いてあるので、
どの方針を取るか迷いがあるんだと思う。
もしコンパイラマクロやリーダマクロを Scheme に導入するとしたら更なる混迷の渦がまきおこるに違いない。
0580デフォルトの名無しさん
2015/01/01(木) 22:29:24.10ID:1QKDEEDD・・・なんてことをschemerが許容するはずないよなぁ。
制限は排除しなきゃいけないんだから。
0581デフォルトの名無しさん
2015/01/02(金) 08:33:14.72ID:bPNmxNy1CL上のCLのマクロについていってるんじゃなくて、CLのマクロをSchemeに持っていったら、という話か?
CL上の話じゃないなら、CLのマクロ、って書くんじゃなくて、Scheme上のCL方式とでも表現しろよ。
0582デフォルトの名無しさん
2015/01/02(金) 08:42:39.63ID:bPNmxNy1Schemeマクロ話のナンセンスなところ。
0583デフォルトの名無しさん
2015/01/02(金) 09:32:04.69ID:q0Ppgk29トロデタノミマス
0584デフォルトの名無しさん
2015/01/02(金) 09:39:25.45ID:B4zclMFOでは、あなたが完璧な健全マクロの仕様と、その実装を作成して
世に問うたらどうかな? それともテストするだけ?
0585デフォルトの名無しさん
2015/01/02(金) 10:46:12.43ID:bPNmxNy1Schemeマクロのユーザー目線の話をしている。
Schemeユーザーからするとマクロは重要なメタプログラミングの道具。
実現方法が難しいからマクロ自体が悪と考えるのは実装者目線であって、
なんもしらんユーザーも一緒に巻き込まれてそう考える、もしくは、
実装者がユーザーも同じように考えてると思ってるとしたら実にナンセンス。
文句があるなら作ってみせろ、ってのもまったく噛み合ってない。
ユーザー=実装者って自虐劇も大概にして欲しいよな。
0586デフォルトの名無しさん
2015/01/02(金) 12:18:00.20ID:eSfzQD/Lよこからだけど
どうして「では」とつなげるの?
頭おかしいの?
いやがらせなの?
0587デフォルトの名無しさん
2015/01/02(金) 12:22:26.20ID:/avknFXM中でいくらunsafeなことをやってても、出来上がったマクロがあらゆる入力に対してsafeであればそれでいいじゃないの
プログラミングってのは、本質的にそういうもんでしょうに…
0588デフォルトの名無しさん
2015/01/03(土) 02:36:58.67ID:paeJ+9Dd> 出来上がったマクロがあらゆる入力に対してsafeであれば
少なくとも Common Lisp におけるマクロはそれが不可能であることがわかっている。
0589デフォルトの名無しさん
2015/01/03(土) 09:58:40.63ID:6aBF9uSOそれが問題になっているという話は耳にしたことがない。
航空ルート検索/予約システム 50万行から http://www.itasoftware.com/
鉄道運行システム http://www.siscog.eu/upload/GESTAO-DE-LISTAS/News/PDF/eclm-2013-siscog-a-story-written-in-lisp-20130602.pdf
昔から積み重ねた実績からして既に充分で新しいマクロ方式に対しての需要もないのだろう。
ずっと昔からCommonLispでは、マクロは実装方式を議論するものではなくて、当り前のように使う単なるツールなんだよ。
0590デフォルトの名無しさん
2015/01/03(土) 10:32:58.23ID:PIPBKeIoschemeも伝統的マクロ+gensymでもいいんじゃね?
0591デフォルトの名無しさん
2015/01/03(土) 11:30:42.47ID:6aBF9uSO伝統マクロ好きだけど、schemeで伝統的マクロ+gensymは駄目だと思うが。
しかしschemeにとってマクロというのはこれから未来の話か?
現在主流の方式も、もう20年前には出尽してるし、メジャーな処理系もマクロのシステムは確立してるだろ。
0592デフォルトの名無しさん
2015/01/03(土) 13:10:06.10ID:paeJ+9DdC/C++ では簡単にバッファオーバーランが起こるとかいうのと同じレベルの話だと思う。
C/C++ ってそういうもんだし、その分だけ出来ることもあると理解していても、
後続の言語ではマシにしようという方向に動いてるだろ。
0593デフォルトの名無しさん
2015/01/03(土) 15:10:46.94ID:PIPBKeIo>schemeで伝統的マクロ+gensymは駄目だと思うが。
なぜ?
0594デフォルトの名無しさん
2015/01/03(土) 15:13:40.86ID:lwZqDtlDhttp://blog.practical-scheme.net/shiro?20100425-scheme-macro
あとCLerの立場としてはSchemeが頑張っていいもの作ってくれたらそれ貰えばいいだけなんだから、応援するところじゃないの
0595デフォルトの名無しさん
2015/01/03(土) 15:16:41.73ID:6aBF9uSOいっとくけど、CommonLispでのマクロに対するレスで、CommonLispでの話だからね。
危険性が0じゃなかったら何一つ実用的なものは書けないのかよってこと。
schemeで伝統的マクロ+gensymはそれこそ簡単にバッファオーバーランが起こるとかいうのと同じレベルだろ。
でもCommonLispでの問題点とそれを運用で回避する方法を具体的に知ってて言ってんの?
パッケージロックで何万行レベルのコードでも簡単にほぼ100%回避できるよ。マシにしようという方向に動いてるって話だな。
CommonLispトータルのシステムと、取ってつけたようなscheme+伝統的マクロを同じ俎上に乗せないでくれよ。
0596デフォルトの名無しさん
2015/01/03(土) 15:43:34.05ID:PIPBKeIo0597デフォルトの名無しさん
2015/01/03(土) 16:37:16.80ID:9iTpTR8Ilisp-2にするとfuncallとかfunctionとかsymbol-*が必要でどうしても大きくなってしまいそう
0598デフォルトの名無しさん
2015/01/03(土) 16:37:49.48ID:lwZqDtlDちょっと検索するとarcにhygienic macroくっつけたコンパイラが公開されてたりするみたいだし
arcのtutorialに書いてあるように、grahamがhygienic macroに対し懐疑的なのでそういう実装になってるだけ
それに対して、変数のシャドウが問題だと考える人たちもいて、>>591というかschemeコミュニティはそっちの考えが主流なんでしょ
でいいのかな、あんま詳しくないけど
0599デフォルトの名無しさん
2015/01/03(土) 16:49:33.65ID:PIPBKeIo>arcがlisp-1で伝統マクロを使ってるからと言って変数がシャドウされやすいという問題がなくなったわけではないでしょ
grahamさんには変数シャドウの問題回避よりも優先させたいが利点が伝統的マクロにあったのではないの?
0600デフォルトの名無しさん
2015/01/03(土) 16:54:07.60ID:XTjqDow20601デフォルトの名無しさん
2015/01/03(土) 16:56:42.27ID:lwZqDtlD例えば?
君が調べてここに書いてくれるとみんなの役に立つと思うよ
0602デフォルトの名無しさん
2015/01/03(土) 17:12:00.12ID:PIPBKeIoさあ、本人に聞いてみないとわからん。
schemerは衛生的マクロ探求の道を選んだ。極めればよいと思う。
でも、それが唯一絶対の選択肢ではないだろうということだ。
0603デフォルトの名無しさん
2015/01/03(土) 17:28:38.80ID:lwZqDtlD延々質問攻めしといて誰もが分かってるようなこと偉そうに呟いて終わりとか失礼すぎませんかね
なんか苛ついちゃった、ごめんね
0604デフォルトの名無しさん
2015/01/03(土) 17:31:59.60ID:PIPBKeIoそれはすまなかったな。
衛生的マクロが絶対という論調に反発していたんだ。失礼した。
0605デフォルトの名無しさん
2015/01/03(土) 17:38:24.77ID:2SRjvD7p0606デフォルトの名無しさん
2015/01/03(土) 17:51:04.31ID:XTjqDow20607592
2015/01/03(土) 19:58:10.40ID:paeJ+9Ddそんなこと言ってないだろうがよ。 むしろお前の主張と同じだ。
Common Lisp はノウハウまで全部含めて CL だから Scheme で後追いすんのアホくせって話。
0608デフォルトの名無しさん
2015/01/03(土) 23:34:02.52ID:X/8nNPInSchemer も Lisper もとりあえず合意できることを列挙しておきたいんだ。
1. Common Lisp の伝統的マクロは健全(衛生的)でない。ので、危険性はゼロでない。
1.1 しかし、CL では大規模プロダクトでも何ら問題は生じておらず、実用的な
道具になっている。理由は、Lisp-2 であること、パッケージロックの機構(ただし処理系依存)の二つ。
2. Scheme は健全なマクロを目指している。
2.1 そもそもlisp-1 のため CL よりも健全性が問題になりやすい。
2.2 syntax-rules は高水準の仕組みで 衛生的マクロとイコールではない。
0609デフォルトの名無しさん
2015/01/04(日) 00:38:59.42ID:368qL5zb> Lisp-2 であること、パッケージロックの機構
言語機能に加えて問題を避けるノウハウとかプログラマの意識みたいなのもあるわな。
Common Lisp では、処理系は道具なんだからプログラマが間違えたら結果が間違ってるのは当たり前だろみたいな意識があるけど、
Scheme では「原理的に」どうだろうということを考えてしまうところがあると思う。
これは比較できる事実を提示しづらいので異論はあると思うけど、根本的な意識が違うところ向いてる感じはあるんじゃないかな。
0610608
2015/01/04(日) 08:11:33.26ID:Qvf/pCiqありがとう、修正してみた。異論がありそうなところは?を付けといた。
まだ色々漏れてると思うんで、がりがり書き替えて欲しい。
1. Common Lisp の伝統的マクロは健全(衛生的)でない。
よって、危険性はゼロでない。
1.1 しかし、CL では大規模プロダクトでも何ら問題は生じておらず、
実用的な道具になっている。
1.1.1 言語の機能として CL は Lisp-2 なので
Scheme に比べて問題が生じにくい。
1.1.2 パッケージロックの機能(ただし処理系依存)が危険性を減らす。
1.1.3 危険を避けるノウハウが確立しており、問題が生じても
プログラマの責任と見做される(?)。
2. Scheme は健全なマクロを目指している。
2.1 Scheme は lisp-1 なので CL に比べて問題が生じやすい。
2.2 syntax-rules は高水準の仕組みで 衛生的マクロとイコールではない。
2.3 問題が生じないこと、を目指している(?)
0611デフォルトの名無しさん
2015/01/04(日) 12:49:20.44ID:eBd7g4M7自分にとっての一般化の過程ではありえても、誰にとってもそうである状態としての一般化は試みるほうが変
0612デフォルトの名無しさん
2015/01/04(日) 14:35:21.21ID:LKpGlVIg合意ということなら、マクロはlispにおいては有用と考えているから導入されている、ということ位だけだよ。
CLではだいたい上手く行ってるからはっきり言ってどうでも良いトピック。
マクロがツールとしてどういう物なのかという、Lispプログラマ的なバランス感覚が弱い奴は、
話の落とし所も分からんから、完璧な健全性とはぁ、とか、
それに反発してマクロ廃止論や制限論をぶち上げたりする。それがループしてるだけ。
話の内容からしてユーザー不在だし、そういうのはschemeの実装者者寄りの奴なんだろ。
lispプログラマとしては、完璧な健全性云々よりも、マクロを書くマクロが壊れてたら嫌って話はあるけどね。
0613デフォルトの名無しさん
2015/01/04(日) 19:03:14.60ID:CJscx6IGdefine-syntaxってなんでグダグダわけのわからんネストを強要するの?
伝統的が
(define-macro (swap! a b)`(let((tmp ,a))(set! ,a ,b)(set! ,b tmp)))
と書けるなら
(define-syntax (swap! a b)〜)となぜ書けないの?
なんで
(define-syntax swap!
(er-macro-transformer
(lambda (form rename compare)
とかダラダラ書かせたりするの?
(define-er-syntax (swap! a b)(rename-let(let set! tmp)〜))
みたいなものを自分で定義しろってことなの?
あと
(define-syntax swap!
(syntax-rules ()
このsyntax-rules ()の()は何なの?
無駄多すぎね?
0614デフォルトの名無しさん
2015/01/04(日) 19:09:39.72ID:CJscx6IGでもセンスは感じられないな
ユーザーはこんなの求めてないと思う
一見して何してるのかさっぱりじゃC++と変わらねーよ
0615デフォルトの名無しさん
2015/01/04(日) 20:54:40.78ID:368qL5zb> (define-syntax (swap! a b)〜)となぜ書けないの?
それだと一種類のパターンしか書けない。
パターン一個で受けて分解して数種類のパターンと比較して分岐するということをやってたら、結局はそこそこの分量になる。
パターンの分解はどちらにせよ必要であることを考えると最初から仕組として持っていた方が簡単だよ。
R7RS の派生式型の項にある事例 (let とか do とか) を syntax-rules なしで書いてみるといい。 絶対に長くなるから。
> (define-syntax swap!
> (er-macro-transformer
> (lambda (form rename compare)
> とかダラダラ書かせたりするの?
これについては余計と言えば余計ではある。
現時点ではどんな仕組みを底レベルマクロとして採用するのか確定してないので、 er を特別扱いすることが出来ないんだ。
er を底レベルマクロとして採用している処理系で er-macro-transformer を挟まずに使える処理系は存在する。
> (define-er-syntax (swap! a b)(rename-let(let set! tmp)〜))
> みたいなものを自分で定義しろってことなの?
そう。
ささいな見た目の違いは簡単に吸収できるので問題ではないという意識が存在するのは確か。
0616デフォルトの名無しさん
2015/01/04(日) 21:23:47.83ID:CJscx6IGありがとう
schemeの健全マクロコードが全く本スレに貼られない状況がわかった気がする
0618デフォルトの名無しさん
2015/01/05(月) 00:43:48.23ID:RVoVEHcD0619デフォルトの名無しさん
2015/01/05(月) 02:01:55.72ID:NkHDsaEk0620デフォルトの名無しさん
2015/01/05(月) 08:59:07.31ID:RiveyRBi0621デフォルトの名無しさん
2015/01/05(月) 09:46:47.88ID:fxjHSPae0622デフォルトの名無しさん
2015/01/05(月) 20:19:58.40ID:hlzryZMMなんで無いの
0623デフォルトの名無しさん
2015/01/05(月) 22:31:21.18ID:nOMDhe0/ttp://gihyo.jp/dev/column/newyear/2015/pronama-lang-prospect
0624デフォルトの名無しさん
2015/01/05(月) 22:59:23.60ID:07fstt/40625デフォルトの名無しさん
2015/01/05(月) 23:46:00.97ID:mLtk6pyN0626デフォルトの名無しさん
2015/01/05(月) 23:59:31.43ID:bLdX1D5l0627デフォルトの名無しさん
2015/01/06(火) 00:34:11.83ID:eMck3PiGメゲずにまとめ続けてほしい
それぞれが今感じている空気を明文化しておかないと文化の継承が行われないので
無駄な争いが繰り返されるし、初学者にも分かり辛くて、ゆくゆくは衰退する気がする
0628デフォルトの名無しさん
2015/01/06(火) 11:54:24.55ID:8Sq14aUr意味なし
0629デフォルトの名無しさん
2015/01/07(水) 18:47:53.19ID:B1sfmm34だれか知らない?
0630デフォルトの名無しさん
2015/01/07(水) 18:56:53.14ID:QndgHfhF0631デフォルトの名無しさん
2015/01/07(水) 19:05:54.13ID:B1sfmm34もってる
正確にはcommonlispが完成する前の古典がいいんだ
0632デフォルトの名無しさん
2015/01/07(水) 19:05:59.78ID:yOI2m8ms0633デフォルトの名無しさん
2015/01/07(水) 19:34:00.10ID:B1sfmm34買いたい
、が高い
0634デフォルトの名無しさん
2015/01/08(木) 08:31:09.10ID:z45nhpuk日本で最初のLisper 中西先生の本
Lisp入門(第3版) (コンピュータ サイエンス 大学講座 1)
0635デフォルトの名無しさん
2015/01/08(木) 15:56:44.31ID:aY0FCIQ3よこレスだが、中西正和氏が日本で最初のLisperという理由を詳しく教えて欲しい。
古くは、中西正和氏の他に、後藤英一、 和田英一、黒川利明、各氏がLISPを啓蒙していたと思う。
処理系であれば、和田英一氏の東大のLISP 1.5が1966年。
中西正和氏のKLISPが1967年。
翻訳でない日本最初の書籍は、1972年にLISPとその応用例 雨宮綾夫氏のようだが。
0636デフォルトの名無しさん
2015/01/08(木) 16:33:57.81ID:z45nhpuk違ったかな。日本に処理系がない時代に自分でLisp処理系を作った方。
古いBitにご自身の述懐があったはず。
はちみつさんかい?
0637デフォルトの名無しさん
2015/01/08(木) 21:08:14.97ID:+zWvjOL7ok
注文した
0638デフォルトの名無しさん
2015/01/08(木) 21:48:08.58ID:62O1Eo70正確に調べたわけじゃないってことね。
当人が知らなかったということがありえるので、
自分が最初だという自己申告じゃなくて、
いつどういう媒体で紹介したのか、
又はいつどういう媒体で紹介したという記述がどこにあるか
という情報が >>635 は欲しいんだと思う。
0639デフォルトの名無しさん
2015/01/08(木) 22:08:10.45ID:97pfwZu70640デフォルトの名無しさん
2015/01/08(木) 22:17:56.20ID:I6LRI8zUなんて言い方を安易にする人をあいてにしてもなあ
0641デフォルトの名無しさん
2015/01/09(金) 01:03:57.91ID:3SGTHVMDまあ初期の Lisper ってことをちょっと誇張して言っただけと理解するよ。
0642デフォルトの名無しさん
2015/01/09(金) 02:08:55.23ID:Uc7qUqpP中西正和氏がKLISPを開発した1967年、1943年生れの中西氏は24歳。
コンピュータは計算機センターに鎮座するものだった当時、
新進気鋭のLisperだったことは確かで日本で最初のLisperであってもおかしくはないよ。
ただ最初のLisperという記述が存在するなら、掘り下げて知りたかっただけ。
和田英一氏の話をみつけたが、日本には1964年にIBMがLispを持ってきたのが最初みたいね。
https://www.youtube.com/watch?v=w8IxEQmtjSE
LISPというもの自体は1960年には日本でも知る人はいたらしい。
0643デフォルトの名無しさん
2015/01/09(金) 06:12:53.28ID:wLSqpqLQ0644デフォルトの名無しさん
2015/01/09(金) 06:40:16.59ID:5XPJ8V7J0645デフォルトの名無しさん
2015/01/09(金) 12:55:07.46ID:3SGTHVMDもちろん業界の人は読んでた可能性はあるが、
絶対数が少なければ沢山の人が読んでたというわけじゃないだろ。
0646デフォルトの名無しさん
2015/01/09(金) 16:58:08.02ID:pC9nRlgZ楽しんで。3版はわからないけど2版まではM式のことも書かれていたよ。
竹内先生の本でも引用されてるね。
初期の理論的、実験的なLispの雰囲気が感じられると思うよ。
パソコンの黎明期、その本で勉強してZ80や6502で自作した人が多かったんだ。
0647デフォルトの名無しさん
2015/01/09(金) 17:14:28.04ID:pC9nRlgZ中西先生
日本が世界に誇るLispの第一人者であり、日本のLisp黎明期に
大きな貢献のあったお方。
Apple-Lispで広くLispを普及させることに尽力された。
0648デフォルトの名無しさん
2015/01/09(金) 17:25:14.92ID:kLhUIc/v精神病なの?
信者なの?
間抜けなの?
0649デフォルトの名無しさん
2015/01/11(日) 00:50:40.64ID:1uYYZkmG0650デフォルトの名無しさん
2015/01/11(日) 20:54:14.26ID:1uYYZkmG例えばwindowsで事前にtkが無くても動くバイナリを配布したい
0651デフォルトの名無しさん
2015/01/11(日) 21:27:52.73ID:G/dsTvxpwish用意しないと動かないんじゃないかな
0652デフォルトの名無しさん
2015/01/11(日) 23:09:11.92ID:1uYYZkmGくーっありがと
0653デフォルトの名無しさん
2015/01/12(月) 09:48:41.69ID:8IfW5imj0654デフォルトの名無しさん
2015/01/12(月) 09:49:51.72ID:8IfW5imj0655デフォルトの名無しさん
2015/01/12(月) 12:44:42.58ID:QwIrvaxBLISP における対話モードのことを REPL というと理解していい。
今では拡大解釈されて対話モードのことを REPL と呼ぶ場面は多いので、
非公式な場面では違いは気にしなくていい。
公式なドキュメントの類では用語の意味を厳密に定義していることもある。
0656デフォルトの名無しさん
2015/01/12(月) 13:34:18.50ID:8IfW5imjありがとうございます
0657デフォルトの名無しさん
2015/01/17(土) 20:01:27.81ID:izv0Z2NULISPの古典ならマッカーシーの書いたこれで間違いない
タダで読めるし
http://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf
0658デフォルトの名無しさん
2015/01/17(土) 21:16:35.88ID:o3oA1RIIwishも入れて配布すればいいじゃん。
ライセンスがGPL系で良ければGTKでもいいし。
0659デフォルトの名無しさん
2015/01/17(土) 22:16:08.04ID:fPiUEmNVMcClimがwindowsで使えたら良かったんだけど
0660デフォルトの名無しさん
2015/01/18(日) 11:00:09.62ID:SofTlcQP0661デフォルトの名無しさん
2015/01/18(日) 11:22:49.90ID:RMv1VVrIきもくもふつくしい点であるという認識でおk?
0662デフォルトの名無しさん
2015/01/18(日) 12:00:39.60ID:8C45mKK2お前のいう、ネストのオンパレードで全体のコードが記述されてるLispコードを教えてくれ
何いってるのかさっぱり分からん。
a(b(c(d(e(f(g())))))) か
x=g();x=f(x);x=e(x);x=d(x);x=c(x);x=b(x);x=a(x);return x; かってこと?
どちらでも書けるよ
0663デフォルトの名無しさん
2015/01/18(日) 12:21:58.45ID:b1+UNBO3エヘヘ
前から後ろから責められて
一組終わるとまた次の一組に前から後ろから責られて
朝まで寝かせてくれないの?
(sub1 (sub1 (sub1 (sub1 onna ))))
もういや!好きにして
エヘヘ
(((lambda (f)
( (f f)
(f (lambda (x) ((f f) x)))))
(lambda (r)
(lambda (n))
(if (=< n 0) 0
(r (sub1 n))))))
108)
煩悩よのう、108回も射精されちゃうんだぁ
0664デフォルトの名無しさん
2015/01/18(日) 13:36:31.88ID:VmLGnzyY0665デフォルトの名無しさん
2015/01/18(日) 13:43:04.69ID:EyFQu+uw0666デフォルトの名無しさん
2015/01/18(日) 13:45:04.49ID:8C45mKK20667デフォルトの名無しさん
2015/01/18(日) 17:55:27.08ID:b1+UNBO3スマホでうったから少し間違ってるけど、だって女だって彼女と思って入れちゃったら強姦罪でつかまっちゃうことよくあるだろ?
でも少し修正
誤 (lambda (n))
正 (lambda (n)
誤 =<
正 <=
男は黙って順番守って不動点前から後ろからコンビネーター
0668デフォルトの名無しさん
2015/01/18(日) 18:28:59.06ID:IYMELPkN定義すればどの処理系でもつかえる、イミフだけど
0669デフォルトの名無しさん
2015/01/19(月) 00:59:01.64ID:H0JxNFUwghci とか
0670デフォルトの名無しさん
2015/01/19(月) 01:09:12.45ID:vB5dyD1F0671デフォルトの名無しさん
2015/01/19(月) 03:02:03.51ID:+Lqzrcjpprologライクな処理系でも=<採用してるかもしれんだろが
0672デフォルトの名無しさん
2015/01/19(月) 06:26:10.62ID:0GUS8Ysoパターンマッチで書けるマクロは別にS式でなくてもいいのか。
ポールグレアムのエッセイを読みかじった限りでは、本気でメタプログラミングしようとしたら必然的にS式みたいな見た目になるとあったが・・・
0673デフォルトの名無しさん
2015/01/19(月) 07:17:05.27ID:+LqzrcjpS式で構文組むのと、中置記法で構文組むので、どっちが楽だと思う?
中置記法は考えなくちゃならないことが沢山あるよ。やることは同じなのにね。
センスがない人が作った構文規則を読解する大変さもS式とは比べものにならないと思うよ。
0674デフォルトの名無しさん
2015/01/25(日) 14:05:17.86ID:VlSBWUaZ0675デフォルトの名無しさん
2015/01/25(日) 16:14:10.99ID:oYybbT2J(+ 1 2 3 4 5)とかできないし(1 2 3 4 5 + + …て数える必要ある。1個足りずゲームオーバー)
制御文とか気持ち悪いし
S式も気持ち悪いかもしれないけど
頭のシンボルで何が起こるか一貫して判断できるのは楽だよ
0676デフォルトの名無しさん
2015/01/25(日) 17:50:21.11ID:SCpZiFUY関数呼び出しとマクロ呼び出しの構文が同じということだった。
その関数またはマクロの定義を知らないと、
全部の引数が評価されるかどうかすらわからないという。
0677デフォルトの名無しさん
2015/01/25(日) 18:36:00.23ID:fotOuDOu可能な限りは、関数呼出しとマクロの区別を意識しなくても自然に書けるようにデザインすべきだけど、混乱してしまうことはあるわな。
結局はトレードオフの話で、 LISP は全部が括弧っていうことの利点の方が大きい方を取ったってことだから、
欠点の方が上回ると考える人は諦めるしかしゃーない。
0678デフォルトの名無しさん
2015/01/25(日) 19:04:46.91ID:/ILbZFHt0679デフォルトの名無しさん
2015/01/25(日) 21:40:16.52ID:N/2viYWx逆ポーランドは、記法というより、入力として優れてるな。
つまり電卓にピコピコと打ち込んでいくとき。
エディタとかでソースを(行ったり来たりして)自由に編集できるような時には、また別だな。
0680デフォルトの名無しさん
2015/01/26(月) 00:18:05.47ID:7chHv/Eb!0681デフォルトの名無しさん
2015/01/26(月) 00:40:09.06ID:JXLXqXue0682デフォルトの名無しさん
2015/01/26(月) 00:43:58.26ID:iZHP10LQ0683デフォルトの名無しさん
2015/01/26(月) 13:44:12.08ID:NiwRrDAY関数呼び出しとマクロ呼び出しの構文が同じで戸惑うやつって一定数いるよね。
ある程度の命名規約みたいなゆるいものはあることが周知されてないってことなのかな。
でも、戸惑った経験のある奴に話を詳しく聞くと中途半端なんだよね。
(set! x 3)のx、(if a b c)での、b c、(define (f x) )での、f、xなどの評価で悩んでる人はいないみたい。
不思議だよね。
0684デフォルトの名無しさん
2015/01/26(月) 20:40:06.93ID:4zyEVdgP(define stack '())
(define(fpush stack o)(set! stack(cons o stack))stack)
(define(fpop stack)(if(null? stack)#f(prog1(car stack)(set! stack(cdr stack)))))
正しくは下のようなコードかマクロ
(define(make-stack)(list 'stack))
(define(fpush stack o)(set-cdr! stack(cons o(cdr stack)))stack)
(define(fpop stack)(if(null?(cdr stack))#f(prog1(cadr stack)(set-cdr! stack(cddr stack)))))
0685デフォルトの名無しさん
2015/02/10(火) 00:30:09.76ID:tqHZRQkI0686デフォルトの名無しさん
2015/02/10(火) 00:41:44.23ID:XVYkzgVe0687デフォルトの名無しさん
2015/02/10(火) 01:06:47.56ID:k6AusJkjの声が大きいせいでlisp使ってると変な目で見られて迷惑
0688デフォルトの名無しさん
2015/02/10(火) 01:14:38.03ID:fRDEvoke0689デフォルトの名無しさん
2015/02/10(火) 01:18:07.27ID:B8CTINpo0690デフォルトの名無しさん
2015/02/10(火) 01:19:51.15ID:fRDEvokeイルノカナ
0691デフォルトの名無しさん
2015/02/10(火) 02:41:13.27ID:tqHZRQkI0692デフォルトの名無しさん
2015/02/10(火) 04:55:00.38ID:aeiYROV4http://engineer.typemag.jp/article/somewrite_cto
Cより速いCommon Lisp
http://togetter.com/li/740107
サムライトはCommon Lispという最先端の技術を使う数少ないWeb企業です。
http://blog.8arrow.org/
3月5日 (木) に「Clack Meetup #1」というイベントをサムライト株式会社のオフィスにて開催します。
http://blog.8arrow.org/entries/2015/01/20
なぜなら、僕を理解するにはまずCommon Lispを理解しなければならないからです。Common Lispとその言語思想を理解することで、ようやく僕がこれまで生み出してきたものを理解するに至ります。
http://nitro-idiot.hatenablog.com/entry/2011/11/11/222814
0693デフォルトの名無しさん
2015/02/10(火) 06:34:10.82ID:cHYpWE0N劣等感滲み出る書き込みだね
0694デフォルトの名無しさん
2015/02/10(火) 08:43:16.32ID:tqHZRQkI0695デフォルトの名無しさん
2015/02/10(火) 09:05:50.54ID:tqHZRQkILispがCより速いとかデマに騙されないように
0696デフォルトの名無しさん
2015/02/10(火) 09:56:46.42ID:aeiYROV4Cより高速なCommon Lispコードを書く
http://blog.8arrow.org/entry/2014/10/23/063044
>Cの「http-parser」より6.4倍高速です。
>比較対象のCのhttp-parserはNode.jsで使われているものなので、
>かなりの高速化が施されていると推測されますが、それを
>Common Lispに移植したら少しだけ速くなりました。
>処理系依存のハッキーなテクニックを使ってるわけでもなく
>標準の機能だけで。
標準の機能だけでCより6.4倍高速ですが何か?
0697デフォルトの名無しさん
2015/02/10(火) 10:14:52.15ID:tqHZRQkIこれは空想だし、
>>695
現実は殆どのケースでトリプルスコアで負けている
騙されてはいけない
0698デフォルトの名無しさん
2015/02/10(火) 10:30:28.76ID:aeiYROV4http://practical-scheme.net/wiliki/wiliki.cgi?Lisp%3A%E3%82%88%E3%81%8F%E3%81%82%E3%82%8B%E8%AA%A4%E8%A7%A3
LISPは速い - 翡翠はコンピュータに卵を生むか
http://d.hatena.ne.jp/masatoi/20100118/1263741706
ろーてく - ブログ Common Lisp 早い!?
http://lowtech.oops.jp/modules/weblogD3/details.php?blog_id=84&cat_id=12
:: Lispって意外と速い? | 世界の半分〜まじかる☆ちきんれーす ::
http://halfworld.jugem.jp/?eid=130
LISP ベースの「世界最速」 (と作者が信じる) ウェブサーバ - スラッシュドット・ジャパン
http://slashdot.jp/developers/article.pl?sid=09/05/28/0218247
リリカル☆Lisp開発日記 » Blog Archive » LispをCより速くする
Island Life - 「Cで書くコードの方がCommon Lispで書くより速いって人がいたら、それは彼のCの技量が高すぎるってことだね。」
http://blog.practical-scheme.net/shiro/20100620a-lisp-speed
Lisp は「C 言語並みに速い」「C 言語より速い場合がある」
http://valvallow.blogspot.jp/2010/06/lisp-c-c.html
http://blog.bugyo.tk/lyrical/archives/219
0699デフォルトの名無しさん
2015/02/10(火) 10:34:18.20ID:tqHZRQkICより速いのひとつもないのが現実
0700デフォルトの名無しさん
2015/02/10(火) 10:39:03.20ID:CJY92eMDそういう構造ってどこにでも見るよね
権威主義的なやつがハクつけるために嗅ぎ付けて来ちゃう
最近馬鹿にされがちな意識高い系ってのもまるごと
そういう振る舞いに憧れて量産された馬鹿のことなんだよな
0701デフォルトの名無しさん
2015/02/10(火) 10:56:08.84ID:zSCFRYjGCommonLispがRubyやPythonより大体100倍のオーダーで速くてCにも迫れる位の認識は広まったから良いんじゃね?ってところだな。
言われなければ、CommonLispはRuby位の速度だって思ってるんじゃないかな。
0702デフォルトの名無しさん
2015/02/10(火) 10:57:43.08ID:ksYpl7Rb俺そういう認識だったw
0703デフォルトの名無しさん
2015/02/10(火) 13:36:23.66ID:qAZJcue+ゴールまでの近道を見付けるのがLispの方が速くて
そこが勝因になることがあるってこと
0704デフォルトの名無しさん
2015/02/10(火) 13:51:08.94ID:tJWV0Msc0705デフォルトの名無しさん
2015/02/10(火) 14:23:55.99ID:Unjui7d00706デフォルトの名無しさん
2015/02/10(火) 17:59:23.16ID:pF/aVswz発想・設計から保守まで含めた速度で考えればLispでも何とかCに対抗できるはず
0707デフォルトの名無しさん
2015/02/10(火) 18:00:58.30ID:pF/aVswz断言するが、Cの方が頭を使う
実務的には、5月に、昔作ったCのコードを保守できる人がうちの会社から消える
0708デフォルトの名無しさん
2015/02/10(火) 19:45:05.28ID:fy1hPi3U0709デフォルトの名無しさん
2015/02/10(火) 19:50:49.00ID:Ae/h3GWY0710デフォルトの名無しさん
2015/02/10(火) 20:05:07.35ID:tJWV0Mscそれは頭を使うのいみが違う
そのくらいわからんのか
0711デフォルトの名無しさん
2015/02/12(木) 13:30:34.03ID:H2BvcWHQ0712デフォルトの名無しさん
2015/02/12(木) 13:55:25.12ID:/vHxcq1E0713デフォルトの名無しさん
2015/02/12(木) 14:10:50.33ID:y72uNgid0714デフォルトの名無しさん
2015/02/12(木) 20:39:43.51ID:nopYXecfいきなりだったら何の話でもどこの会社でもダメだ
バカじゃねーの
0715デフォルトの名無しさん
2015/02/12(木) 21:46:59.13ID:+oiFZXuj「リスプできます!」って。
0716デフォルトの名無しさん
2015/02/12(木) 21:55:53.76ID:DvTDGtdT0717デフォルトの名無しさん
2015/02/12(木) 22:19:22.63ID:+oiFZXujで、採用されたんですか?
0718デフォルトの名無しさん
2015/02/15(日) 11:11:00.17ID:R3mGDphaどっちも同じようなもん?
0719デフォルトの名無しさん
2015/02/15(日) 12:13:34.14ID:imHzIbsqどっちも学べ
The little schemerと
Land od Lisp買っとけ
0720718
2015/02/15(日) 13:01:52.23ID:1MddSWAdwiki見るとschemeはミニマムを目指してるみたく書いてあったから、先にschemeトライするのが正解に思えてきた。
ま、入口で悩んでる時間ももったいないですしね
0721デフォルトの名無しさん
2015/02/15(日) 13:03:54.46ID:imHzIbsq用途によるな
将来的にLispを使うのならCL
継続などを学びたいだけならscheme
0722デフォルトの名無しさん
2015/02/15(日) 14:01:01.91ID:3OrubE+sSchemeはまともなマクロを標準化できてない。
0723デフォルトの名無しさん
2015/02/15(日) 14:02:06.36ID:zF3eUWac0724デフォルトの名無しさん
2015/02/15(日) 14:11:13.02ID:UOWPKbNmSchemeで。
相性悪かったらこの世界とはおさらばで。
0725デフォルトの名無しさん
2015/02/15(日) 14:12:55.86ID:XmVE8RCz0726718
2015/02/15(日) 14:19:57.93ID:1MddSWAdさわりだけならすぐ一回りできるらしいし、schemeの処理系入れたんで弄ってみます
>>722氏のコメントは頭に置いときます。アドバイスありがとうございます。
0727デフォルトの名無しさん
2015/02/15(日) 14:27:58.38ID:pH70D4cQTheが抜けてます
0728デフォルトの名無しさん
2015/02/15(日) 14:33:56.00ID:u2JNOHd3>>722なんか意味ないよ
とりあえず初心者が学ぶ段階では
俺もThe Little Schemerをすすめるな
1章から7章までは多分を簡単
「バカにしてるのか?」と思うかもしれない。が、しかし……
ま、8と9章で向き不向きがわかるかな
そこで挫折する人は多いだろな、この前もここで「諦めた」って人いたし。
最後はインタープリターつくるんだが、前章までわかってりゃ楽ちんかな
ま、頑張ってくれ
俺もThe Little Schemerやったよ
あ、特徴をひとつ。セルには触れない。あくまで記号処理の枠でやる。
0729デフォルトの名無しさん
2015/02/15(日) 15:10:49.06ID:Qwk5nQv89章のお題YCをもういちどTheLittleSchemerの最初から追っていけば今度こそ理解できるかな‥これから本屋だ
0730デフォルトの名無しさん
2015/02/15(日) 15:30:33.73ID:zLqQDneS専用の構文がある言語の方が良い
0731デフォルトの名無しさん
2015/02/15(日) 16:02:18.10ID:sccCWRTy0732デフォルトの名無しさん
2015/02/15(日) 16:09:03.92ID:zLqQDneS関数型プログラミングがしたいだけならlispよりもっと向いてる言語がある
the little schemerは読む価値あるけど
0733デフォルトの名無しさん
2015/02/15(日) 16:46:54.32ID:UOWPKbNm0734デフォルトの名無しさん
2015/02/15(日) 17:16:19.34ID:YH8/c8HQ好きなのやれ
0735デフォルトの名無しさん
2015/02/15(日) 17:22:29.65ID:sccCWRTyWebアプリや携帯はjavaが多いけど、Webサーバまでみるとlispがいまだに幅を利かせているという現実
0736デフォルトの名無しさん
2015/02/15(日) 17:26:39.49ID:+YnK72sf0737デフォルトの名無しさん
2015/02/15(日) 19:52:55.35ID:00orNeCZごく少数の過去の遺物ですよ
0738718
2015/02/15(日) 20:50:16.81ID:5ldiypqZ丁寧に教えてくれて嬉しいです。little schemerはkindle版ないのが残念だけど、本屋で覗いて見ますわ。
実は上に書き込んでから「独習 Scheme 三週間 」ってサイトを見つけてのめりこんでましたよ。
重ね重ね、皆さんレスありがとうございます
0739デフォルトの名無しさん
2015/02/15(日) 22:14:15.77ID:CdX1KqlBallegroserve に Lispache、最近は >>692 かな
0740デフォルトの名無しさん
2015/02/15(日) 22:46:31.69ID:TPGLiVec0741デフォルトの名無しさん
2015/02/15(日) 23:27:20.71ID:SrUN3Dg4正気じゃない役立たず
0742デフォルトの名無しさん
2015/02/15(日) 23:32:11.13ID:UOWPKbNm0743デフォルトの名無しさん
2015/02/15(日) 23:56:20.13ID:gBYECTA5わかると思うよ
自分自身へのポインターを確保するために引数をひとつとって無名再帰させる話でしょ?
それがわかば適用順Yコンビネーターは割りと単純は変形
要するに適用をラムダ化して引数化していく
躓いたところはここで聞けば?
わかる範囲でこたえる
0744デフォルトの名無しさん
2015/02/16(月) 00:26:54.10ID:oJNvAL6Zthx
0745デフォルトの名無しさん
2015/02/16(月) 00:41:35.25ID:XOZRxjEFアプリ立ち上げなおせば作業再開できるとかオーパーツレベルの過去の遺物
だよな。。。
0746デフォルトの名無しさん
2015/02/16(月) 01:00:16.09ID:vEgulV7RScheme がミニマムを目指してるってのはよくある誤解。
議論を徹底するので無闇に膨れたりはしないけど、議論した結果として機能を増やすことになれば増やす。
議論でまとまらなければ未定義になるので結果的に未定義だらけで今のところ仕様は小さいってだけ。
未定義の部分はそれぞれの処理系がそれぞれの作者の考え方で作るから、
そういうところも含めれば実態としてはそんなに小さくもない。
0747デフォルトの名無しさん
2015/02/16(月) 08:43:44.54ID:v1v01xXU教養としてSchemeは学んでもよいとは思う。
けど、ある程度理解したら新しくてメジャーな言語にした方がいい。
経済的な問題もある。
0748デフォルトの名無しさん
2015/02/16(月) 09:20:43.96ID:SUgqenX3「確かにそうできるけど、なんかイケないんだぁ。先生、この子、なんかズルしてます!!」
って感じぃ
1. nilが意味し得るもの
2. (car nil), (cdr nil)がエラーにならないこと
ま、それに慣れてるとSchemeって
「おまえ、どんだけ融通効かないの?記述が冗長になるだろうが。これだから模範性は!!」
って感じぃ
0749デフォルトの名無しさん
2015/02/16(月) 09:40:02.74ID:+79ZJbqlt先生とa君かよ
0750デフォルトの名無しさん
2015/02/16(月) 10:48:05.30ID:XP4TAyIw> オーパーツレベルの過去の遺物
オーパーツの意味わかってないだろっwww
0751デフォルトの名無しさん
2015/02/16(月) 11:08:20.53ID:fGaWs66b0752デフォルトの名無しさん
2015/02/16(月) 12:16:59.36ID:XOZRxjEFオーパーツその殆どが現在の技術で作られた偽物って意味の方かw
0753デフォルトの名無しさん
2015/02/16(月) 12:25:36.01ID:/7ZzO7v+それを紹介していた人もそのように紹介していると思ったがね。シングルユーザー的利用には利点ありということだと
0754デフォルトの名無しさん
2015/02/16(月) 13:34:06.42ID:221hWi7Iすまん。あえて使い方が間違っているとすれば「過去の遺物」のほうだった。
もちろん「(過去の)遺物」のうち特殊なものが「オーパーツ」なので一概に間違いではないのだけれども
IT の文脈において「過去の遺物」って、たいがいネガティブな意味合いでの使い方
http://ejje.weblio.jp/sentence/content/%E9%81%8E%E5%8E%BB%E3%81%AE%E9%81%BA%E7%89%A9?catId=computer
が一般的だから、同じく IT の文脈における「オーパーツレベル」「オーパーツ的」の持つ
「そんなのが当時すでにあったのか!」というポジティブな印象と矛盾してたのでつい反応してしまった。
反省している。
0755デフォルトの名無しさん
2015/02/16(月) 13:45:00.90ID:xpXsFOjU0756デフォルトの名無しさん
2015/02/17(火) 15:42:16.05ID:uEz4EDP+そもそもLisp族は他言語の良さげな機能を容易に吸収できるようにできているのだから、清濁合わせ飲む度量が必要なんだよな。
0757デフォルトの名無しさん
2015/02/17(火) 15:43:25.57ID:skl6PNp3意味わかりませーん
僕ってネトウヨじゃないからぁ
0758デフォルトの名無しさん
2015/02/17(火) 15:56:22.28ID:qY51Xt/NSchemeはLISPじゃないからな
>>757
障害者
0759デフォルトの名無しさん
2015/02/17(火) 16:17:05.68ID:wG+R2OX6-- Revised7 Report on the Algorithmic Language Scheme
0760デフォルトの名無しさん
2015/02/17(火) 17:48:11.41ID:8r34wW9h0761デフォルトの名無しさん
2015/02/17(火) 17:53:33.92ID:NYMkftReあたまわるすぎぃ!!
0762デフォルトの名無しさん
2015/02/17(火) 17:54:26.41ID:NYMkftReば、ばかだぁぁぁぁぁ!!
0763デフォルトの名無しさん
2015/02/17(火) 17:55:28.42ID:TUaKLPcf(car '())はnilがいいなぁ
0764デフォルトの名無しさん
2015/02/17(火) 18:29:31.00ID:wG+R2OX6(import (except (scheme base) car)
(scheme write)
(prefix (only (scheme base) car) r7rs:))
(define (car p)
(if (null? p) '() (r7rs:car p)))
0765デフォルトの名無しさん
2015/02/17(火) 18:34:17.38ID:8r34wW9h(car '()) -> '()はバグの温床だと個人的には思うが (fifth '(1)) -> '() のような挙動が便利というのも分からんでもない。使い所によるな。
0766デフォルトの名無しさん
2015/02/17(火) 19:19:48.66ID:aFjf+me90767デフォルトの名無しさん
2015/02/17(火) 19:22:20.72ID:qG8UOtzo0768デフォルトの名無しさん
2015/02/17(火) 20:29:55.85ID:8OD0gx620769デフォルトの名無しさん
2015/02/17(火) 21:38:30.14ID:8r34wW9hそういう類のバグだからそうだろうな
0770デフォルトの名無しさん
2015/02/17(火) 22:06:26.85ID:QJUfJhiALispでなにを選べばいいかわからんというなら
覚えるものが少ないSchemeの処理系がよくないか?
やっぱりなんだかんだ言ってSchemeはminimalでしょ
んで、日本で一番勢力のでかいGauche
CommonLispはSchemeが使えれば使えるでしょ。
本質的に変わるところはない
0771デフォルトの名無しさん
2015/02/17(火) 22:16:55.02ID:zSkbbRcpquicklispあるし
0772デフォルトの名無しさん
2015/02/17(火) 22:21:55.57ID:x9xb7pmC0773デフォルトの名無しさん
2015/02/17(火) 22:30:44.54ID:TUaKLPcf今だとclojureが一番使い心地は良い
つか学習ならMinmalなLisp1を自前で実装してとかじゃないの?
0774デフォルトの名無しさん
2015/02/17(火) 22:37:14.80ID:LyM4otn40775デフォルトの名無しさん
2015/02/17(火) 22:42:21.40ID:TUaKLPcfschemeだと一部しか使えないけどemacs+swankでいいじゃない
0776770
2015/02/17(火) 22:52:10.12ID:QJUfJhiA便利だよねぇ。
アプリがインストール不可な職場のPCに入れてる。
他の言語のも欲しいがEmacsべったりなのはCommonLispだけなのか。
せめてSchemeのが欲しいよう。
(PortablePythonは入れてる)
>>773
Clojureどうなの?
末尾呼び出しの最適化がだめなのと、
List至上主義ではなくArrayとか使えとか読んでちょっと敬遠気味。
(うろおぼえなのですまん)
Swingが使える言語はすごい期待できるんだけどなぁ。
Scalaより関数型言語でしょ ?
0777デフォルトの名無しさん
2015/02/17(火) 22:54:34.17ID:x9xb7pmC0778770
2015/02/17(火) 23:03:40.13ID:QJUfJhiAWindows, MacOSX, FreeBSDでポータブルな
グラフィックライブラリと関数型言語の組み合わせを探してる。
OCaml + LablGTK
Haskell + wxHaskell
はけっこー環境構築が大変な気が
Clojure or Scala + Swingはなんとなく気が引ける。
末尾呼び出しやList至上主義はやめるべき ?
最近ではWindowsだけでいいよってなことで
F# + .Net
でいいやと思っています。
0779デフォルトの名無しさん
2015/02/17(火) 23:22:47.75ID:x9xb7pmCCCL and GTK
0780デフォルトの名無しさん
2015/02/17(火) 23:23:01.55ID:3IDX5J7lただエラーがjavaのそれなんで初心者には厳しそうな気がする
0781デフォルトの名無しさん
2015/02/17(火) 23:24:29.76ID:WE2OvojJ0782デフォルトの名無しさん
2015/02/18(水) 00:29:34.01ID:IIzZpLEYClojureはエラーメッセージがほとんど意味を成してないのが難点
0783デフォルトの名無しさん
2015/02/18(水) 13:19:38.92ID:f8p6ba1iイミワカラン
0784デフォルトの名無しさん
2015/02/18(水) 18:31:54.68ID:fV0fV7QU>>778
CommonQtもいいよ。今はGTKよりもQtの方がポータブルなんだな。
LGPL化されたことだし。
0785デフォルトの名無しさん
2015/02/18(水) 18:34:34.02ID:lWf4Tu5L0786デフォルトの名無しさん
2015/02/19(木) 02:40:01.19ID:mO2vvUs4hashmap食わせてもシーケンスで[k v]受け取るとかのことかな?
今自分が感じるClojureの最大の魅力はリテラル表現が最初から多彩な事だったりするんだけどああいうのschemeとかclとかだとreader macroになっちゃうからめんどくさいんだよな
;; 逆にclojureはreader macroの自由度が無いんだけどね
0787デフォルトの名無しさん
2015/02/19(木) 15:24:06.43ID:oBz61BX8早く死滅しろ
0788デフォルトの名無しさん
2015/02/19(木) 15:34:30.15ID:HYj0+sYB0789デフォルトの名無しさん
2015/02/19(木) 16:16:23.69ID:4dC5fmDk0790デフォルトの名無しさん
2015/02/19(木) 21:28:43.24ID:+RCnoNWUnavi2chで書き込めるから。
0791デフォルトの名無しさん
2015/02/19(木) 22:38:36.52ID:lYvP8ayQhttp://www.reddit.com/r/newsokur/
やっぱopen2chとかじゃね
0792デフォルトの名無しさん
2015/02/20(金) 03:42:47.18ID:LNoPfWUW0793デフォルトの名無しさん
2015/02/20(金) 03:52:21.37ID:LNoPfWUW( ) と [ ] と { } が入り交じるコードはマクロ書きにくそうというか、プログラムをデータとして見たときに扱いづらそうなんだよな。
0794デフォルトの名無しさん
2015/02/20(金) 17:22:19.89ID:I0m4Nbanそれとも文字列を'(#\h #\o #\g #\e)と書いた方が良いって話か.
0795デフォルトの名無しさん
2015/02/20(金) 17:26:35.01ID:uxCAuLIo[] {}の中にはS式が入るからややこしくなるってことだろ
clojureしらんけど
0796デフォルトの名無しさん
2015/02/20(金) 18:05:05.82ID:Of1gimuUえ?マクロ書くときにリーダマクロでの評価とか気にするのならともかくマクロでList,Vector,Hashとかを表現として区別することなんてあるの?
渡されたリストの要素が何かって知る必要はあるけどリテラル表現とか気にしないよね?
0797デフォルトの名無しさん
2015/02/20(金) 20:07:53.43ID:LNoPfWUW(defmacro my-let [[var val] & body]
`((fn [~var] ~@body) ~val))
(defmacro my-let2 [[var val] & body]
(list (cons 'fn (cons (vector var) body)) val))
逆クォートじゃなくてリスト操作でプログラムを組み立てたいときとか
0798デフォルトの名無しさん
2015/02/20(金) 22:14:19.12ID:I0m4Nbanclojureに関しては
(['a] 0) -> a
({'a 0} 'a) -> 0
なところがマクロ定義で式操作場合でも都合良いなとしか思えんな.
0799デフォルトの名無しさん
2015/02/21(土) 20:39:20.87ID:bHxWybNH心配するな。いずれLisp系は絶滅する。
0800デフォルトの名無しさん
2015/02/21(土) 21:31:43.58ID:SweHsfSkまあEmacsはいい加減どうにかすべきだとは思う
0801デフォルトの名無しさん
2015/02/21(土) 21:36:32.23ID:qCqW+14K0802デフォルトの名無しさん
2015/02/21(土) 21:43:28.33ID:8m4o3u2U0803デフォルトの名無しさん
2015/02/21(土) 22:03:23.29ID:bst4VCEg安心するとよい、コンピュータのパラダイムが変わらない限りLispは滅びることはない。
絶滅しても同じ発想に至ればまた生まれる。(つか絶滅するまえに常になんかにょきにょき生えてくるし)
0804デフォルトの名無しさん
2015/02/21(土) 22:13:43.80ID:38FxidpDCOBOLやJavaのように産業界を支える日は来るのだろうか。
0805デフォルトの名無しさん
2015/02/21(土) 22:15:43.32ID:bst4VCEg産業界の床下開けるとわかるんじゃねぇの?
0806デフォルトの名無しさん
2015/02/21(土) 22:19:36.77ID:hnlhMh5B0807デフォルトの名無しさん
2015/02/21(土) 23:06:34.38ID:z4IdcAcZこのままlispが無くなることはないけど、進歩はあるんだろうか?
0808デフォルトの名無しさん
2015/02/22(日) 00:39:12.43ID:ER05y4VTAST (というか厳密に言えばそれに近しいリストだが) を直接書くのをやめたら、それ LISP って名乗れると思う?
LISP インスパイアな新しい言語じゃね?
そういう言語がどんどん現れてもいいけど、そういうのも LISP に含むってのは無理がある。
0809デフォルトの名無しさん
2015/02/22(日) 00:39:17.03ID:EahD+U6Wうーん
遅いしぃ
0810デフォルトの名無しさん
2015/02/22(日) 00:52:19.45ID:6rRicQBcM式…
0811デフォルトの名無しさん
2015/02/23(月) 16:18:29.04ID:BmUIEc7DM式が有れば、こういう感じだったのかなって思った
0812デフォルトの名無しさん
2015/02/23(月) 19:56:10.19ID:jznlhI3VSMLの方がもっとSchemeっぽいよ。
0813デフォルトの名無しさん
2015/02/23(月) 20:02:21.97ID:jznlhI3VM式はもっとちがうな。アレンの「Lispの構造」
を読んでみるといい。
0814デフォルトの名無しさん
2015/02/24(火) 00:37:05.93ID:eLXIVH4f最近は gauche の pa$ や cut や $ .$ なんかを多用して関数合成で書くことにしてる
こっちのがモジュラリティ高くなる
0815デフォルトの名無しさん
2015/02/24(火) 00:55:07.12ID:wj4iFY4sマクロ用のデバッガとかが必要なんだろうけど。
0816デフォルトの名無しさん
2015/02/24(火) 04:35:19.18ID:WA96UrQV展開した先でエラーが起こったときに元のマクロを特定するための情報を残しておけばできるのかな。
0817デフォルトの名無しさん
2015/02/24(火) 06:30:12.28ID:xl3zgpOz大中小カッコ自由に使えるようにならんの?
0818デフォルトの名無しさん
2015/02/24(火) 10:15:00.82ID:MjCxRVrn(defmethod :around make-instance ((class 'standard-class) &rest initargs)
(if (subtypep class particular-class)
...
(call-next-method)))
こんなんしか思いつかないんですが、いろいろよくない感じがします
0819デフォルトの名無しさん
2015/02/24(火) 10:16:30.82ID:MjCxRVrn0820デフォルトの名無しさん
2015/02/24(火) 12:01:23.83ID:8m2gPI9o>カッコが重なった見づらさといったらない
適切な字下げと慣れの問題では?
ASTに近いものを直に見せられることからくる見づらさは括弧の問題ではないし。
>大中小カッコ自由に使えるようにならんの?
lexerレベルで同じ括弧トークンとして扱うだけ。
0821デフォルトの名無しさん
2015/02/24(火) 21:55:34.07ID:pJ3tHQCBまあ用意されてるマクロ使う方が安心な気はするよな。
0822デフォルトの名無しさん
2015/02/24(火) 22:01:02.66ID:et7v2++Tマクロだけに
0823デフォルトの名無しさん
2015/02/24(火) 22:03:46.41ID:pJ3tHQCB実用的には良くてもなんだかつまらないかも。
0824デフォルトの名無しさん
2015/02/24(火) 23:04:17.75ID:IpitA/Z1ただ非常にもやもやしていることがあります。
LISPerってやっぱり大学でちゃんとコンピュータサイエンスを学んだ人が使っているイメージですが
自分は専門学生です。
後ろめたいというよりは、他のLISPerに笑われるのが怖いです。
自分のような低学歴がLISPを学ぶことは問題ですか?
0825デフォルトの名無しさん
2015/02/24(火) 23:06:17.75ID:f1Zj88nD0826デフォルトの名無しさん
2015/02/24(火) 23:09:36.90ID:f1Zj88nDここだけで小便漏らして喜ぶ
0827デフォルトの名無しさん
2015/02/24(火) 23:15:22.26ID:/uBniPhk昔はすごいLisperがいたけど。最近は大したことはない。
ざっくり学んだら新しいタイプの「言語に移った方がよいと思う。
0828デフォルトの名無しさん
2015/02/24(火) 23:26:00.06ID:/uBniPhkコンピューターサイエンスの人たちはHaskellやML系に移っていると思う。
PythonやRubyにも流出していると思う。
0829デフォルトの名無しさん
2015/02/24(火) 23:26:44.33ID:IpitA/Z1いま自分は、Perl, Java, C, C++がつかえます。
LISPは、将来仕事で使うためではなく
自分で何かを作るために学ぶはじめました。
本を読み始めて、LISPer(=ハッカー)とはこういうものだ、
とういうような書かれていることについて、
自分は全くそういうものには程遠く、
そのギャップ?(自分でもよく分かっていない)に苦しんでいます。
問題は言語そのものではなく文化や哲学、思想などです。たぶん
0830デフォルトの名無しさん
2015/02/24(火) 23:30:07.04ID:IpitA/Z10831デフォルトの名無しさん
2015/02/24(火) 23:30:56.36ID:et7v2++T実装できればLISPerを名乗り、このスレに参加しなさい
0832デフォルトの名無しさん
2015/02/25(水) 00:01:33.21ID:hXnhoSaa0833デフォルトの名無しさん
2015/02/25(水) 00:35:56.63ID:YEk/rErTとりあえず"SICP"を読んでみるといいよ
ttp://mitpress.mit.edu/sicp/
ttp://sicp.iijlab.net/
あとハッカーの文化や哲学、思想については
"how to become a hacker"を読むといいかもね
ttp://www.catb.org/esr/faqs/hacker-howto.html
ttp://cruel.org/freeware/hacker.html
0834デフォルトの名無しさん
2015/02/25(水) 02:06:20.37ID:2SyF9y9ESICPについてはもうすこしあとになりそうですがいずれ読みたいです。
how to become a hackerはいまから読みます。
みなさんありがとうございました。
はやくレスが来て助かりました。
みなさんのお蔭で前向きに考えることができました。
結論からいうとこれからも続けることにしました。
自分のやりたいことのためには自分の使いたい言語が必要です。
大卒にも笑われない一人前になりたいです。
では、ガウスの消去法を張り付けるまでROMになります。
0835デフォルトの名無しさん
2015/02/25(水) 05:10:57.07ID:NC08Jsw4stackoverflowで質問したら?
ここは思想とか自転車置き場の議論ばかりなので処理系に具体的な質問に返事はないよ.
色々良くないとか書かれても,察するのが面倒なので具体的に書いて欲しい.
副作用だけで良いなら:before,なんやかやするなら:aroundで良いんじゃね?
(defmethod make-instance :before ((class 特定のクラス) &rest initargs))
何が駄目なの? subtypep 使ってる意味が分からんけど.
0836デフォルトの名無しさん
2015/02/25(水) 07:31:20.02ID:L9ZJ97nO質問の仕方が悪くてすみません
ここでの特定のクラスというのはメタクラスのインスタンスとしてのクラス(つまり通常の文脈でのクラス)なので、
(defmethod make-instance :before ((class 特定のクラス) &rest initargs)
では引っかからないです
>>818で個人的に問題だと感じているのは、基本的にすべてのクラスはstandard-classのインスタンスとして作られてるので、
1. すべてのインスタンス生成時の処理に割り込んでしまうことと(大体6倍くらい遅くなる)、
2. 他にmake-instance :aroundを書き換えるようなライブラリなり何かと競合する点
だったのですが、とりあえず1.は適当なメタクラスを用意してcloser-mopでdefclassに介入することで解決できたので大丈夫です
今後はstackoverflowを検討することにします
0837デフォルトの名無しさん
2015/02/25(水) 07:34:41.96ID:L9ZJ97nOすべてのクラスは間違いです
普段使うようなクラスと読み替えてください、すんません
0838デフォルトの名無しさん
2015/02/25(水) 07:59:51.12ID:NC08Jsw4> とりあえず1.は適当なメタクラスを用意して
とりあえず,というかその方法が定石な気がするけれど.
2の競合については別途メタクラスを用意しているのであまり心配する必要もないと思うが.
逆にstandard-classと同じように書けないのが面倒だがマクロでごにょごにょするのが定番.
とりあえず,mopについて答えられる人間はここにはいない.
stackoverflowには居る(日本版でも可).
0839デフォルトの名無しさん
2015/02/25(水) 08:09:11.12ID:L9ZJ97nOmetaclassでやるとdefclass時にいちいち指定しないといけないのが嫌だったので、>>818みたいなことになってました
c2mop:ensure-class-using-classをいじれば
> 逆にstandard-classと同じように書け
るようになったので、今度はこの部分の競合がちょっと心配ではあります
stackoverflowはいいところそうなのでそのうち移ろうと思います
どうもありがとうございました
0840デフォルトの名無しさん
2015/02/25(水) 21:42:41.35ID:bWu+8X+Uガイドラインによれば「急いでこの本を読むな」ということだし、疲れたので続きは明日‥
0841デフォルトの名無しさん
2015/02/26(木) 04:10:00.88ID:SvY4APucttps://www.reddit.com/r/lisp_ja/comments/2x4v7k/lisp_scheme_part_40r/
0842デフォルトの名無しさん
2015/02/26(木) 21:34:58.80ID:5w8IBT4Lおーい、「明日」が終わるぞぉ
0843デフォルトの名無しさん
2015/02/26(木) 21:41:47.24ID:xT0bbyJa0844デフォルトの名無しさん
2015/02/26(木) 21:44:30.37ID:qGJD7aR80845デフォルトの名無しさん
2015/02/26(木) 22:00:20.49ID:WnrsjYVG今日は第二章の途中、lat? のインプリメントを読んだ
cond の括弧の使い方とか混乱する、というか括弧に気をつかっていないが、それでいいのだろうか?
0846デフォルトの名無しさん
2015/02/26(木) 22:26:53.36ID:D8nkDIff0847デフォルトの名無しさん
2015/02/28(土) 14:38:11.56ID:G/1DnfoKtyped racketが一番将来性ありそうだけど妙なバグがまだある
shenは機能も使えるライブラリも少なすぎる
0848デフォルトの名無しさん
2015/02/28(土) 15:41:40.25ID:03dHKIQ/0849デフォルトの名無しさん
2015/02/28(土) 19:05:31.82ID:9uiEaYWegaucheって学習用じゃないからまともなデバッグ機能はないぞ。
トレースさえない。Racketの方がいいんじゃないか?
0850デフォルトの名無しさん
2015/02/28(土) 20:30:29.68ID:+B6Ad1hHデバッグ機能とかけてThe Little Schemerと解くと「たかが」となるのであって
The Little Schemerは良い本だ
続編のThe seasoned schemerも薦める
0851デフォルトの名無しさん
2015/02/28(土) 21:10:09.84ID:WGZr43/Xアドバイス感謝、racket のチュートリアルで赤黒縞々を書いて楽しんでいた、gauche にトレースはあった気がする、ダンプみたいなのが延々出てくるやつだったかな、が、ともかく忘れた
でも、実体はよくわからないが親切そうなので、当分racketでやってみる
racket チュートリアル半分で疲れたので、続きは明日‥
0852デフォルトの名無しさん
2015/02/28(土) 22:13:24.36ID:jTo3w2Q60853デフォルトの名無しさん
2015/03/01(日) 07:37:27.10ID:LlN1UCfi0854デフォルトの名無しさん
2015/03/01(日) 08:36:34.95ID:Us1gnFjPそれとatom?は標準手続きに無いことに気づかずはまりやすい。
冒頭に説明があるが目立たないので注意が必要。
再帰を理解できたらもっと一般的なコンピューターサイエンスの本を
あたったらいいと思うよ。
0855デフォルトの名無しさん
2015/03/01(日) 09:02:36.19ID:Us1gnFjP最近になってRubyで説明されたやさしいコンピューターサイエンスの本が
でていたと思う。
0856デフォルトの名無しさん
2015/03/01(日) 12:10:02.64ID:NAqrB2+0;;;;;;;;;;;ヽ _,, -ー-、 ,r
;;;;;;;;;;;;;;;| ,,r';´;;;;、ミミミミミ∨;;_;;;;;;;;;;;;;;;;;`ヽ,
;;;;;;;;;;;;;;;;| /;;;;;;;;;;;_、、-''´ニニ ,__ `ヽ;;;;;;;;;;;;;/
;;;;;;;;;;;;;;;;;| ./;;;;;;;;;/_, -''´::::;:;::::´ ̄`''' ';;;;;;;;/ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
;;;;;;;;;;;;;;;;;;|/;;;;;;;;;;;/ ´._::::::::::::::::::,-、 ':;;;;/ /
;;;;;;;;;;;;;;;;;;|\;;;;;;;;;;| ‘ー''´ , 、 ̄´ V、 < ハァ? 意味わかんねえよ
;;;;;;;;;;;;;;;;;;| \;;;;| ,( ● ●)、 nヽ \
;;;;;;;;;;;;;;;;;| .>y ,' ', l゙) } \_________________
;;;;;;;;;;;;;;;;| l゙ n l _,,.--、, i |、ノ
;;;;;;;;;;;;;;;|. ', !〈 ',/r,二⌒ユヾ_ j
;;;;;;;;;;;;;;| ヽ_∧ ''''´ ̄ ̄` イ __ ( 丿
;;;;;;;;;;;;;|___,, -'''⌒ ヽv\ __,,ィ | /,ハ ) ノ ドコマデクズヤネン
;;;;;;;;;;;;|ー- 、_ `ヽ`ヾ、ー''''´`´ ; j r(ZZyZZZZZZ■
;;;;;;;;;;/ _,>、 `ヽ, `丁`l ; √`-、 `ヽ `" //// 〉
;;;;;;;;;| ´ `ー、 \| ゝ、 ,〈 / ゝ、,,_`´´ノ
;;;;;;;;ノ__ ィ´` 7ー、 ヽ\ノノ) ハ ノ /
;;;;;;/::::::`ー-、__ | ___,| ヽ `V/ '., /`ーァ ィソ
;;ノ:::::::::::::::::::::::`ー-Lユゝ, `i | / l//
:::::::::::::::::::::::::::::::::::::::::::::::::::ゝ,、、 l | ,r个 ー−イ
:::::::::::::::::::::::::::::::::::::::::::::::::::::lj |.|.l| |. / �U j
:::::::::::::::::::::::::::::::::::::::::::::::::::::´ lj.リ |ノ |
.
.
0857デフォルトの名無しさん
2015/03/01(日) 18:27:37.28ID:tiMnWTGzhttp://www.oreilly.co.jp/books/9784873116976/
0858デフォルトの名無しさん
2015/03/01(日) 18:38:02.66ID:NAqrB2+00859デフォルトの名無しさん
2015/03/01(日) 21:02:11.55ID:N5IwhD3H古いのは長い年月の淘汰を生き残ったんだから立派なもんだろうし、
新しいのは新しい知見が盛り込まれてるだろうし。
0860デフォルトの名無しさん
2015/03/01(日) 22:11:09.83ID:aBnqKp0dWhat is Gradual Typing: 漸進的型付けとは何か
http://qiita.com/t2y/items/0a604384e18db0944398
"オプションの型アノテーションを持つ言語には Common LISP, Dylan, Cecil, Visual Basic.NET, Bigloo Scheme, Strongtalk があります。"
なにやらCLとbiglooが入ってる。
そこで型推論やら型検査やらしてくれるのかはよく分からない。
0861デフォルトの名無しさん
2015/03/01(日) 22:16:41.72ID:aBnqKp0dAugust 2013 -- Explicit typing
http://www-sop.inria.fr/mimosa/fp/Bigloo/doc/bigloo-27.html
0862デフォルトの名無しさん
2015/03/01(日) 22:22:47.14ID:rdPv98Ov0863デフォルトの名無しさん
2015/03/01(日) 22:47:47.89ID:aBnqKp0dChapter 5 Advanced Compiler Use and Efficiency Hints
Type Inference
https://common-lisp.net/project/cmucl/doc/cmu-user/compiler-hint.html#toc154
asm.jsは、GC止めてunsafeに自前メモリ管理させて高速化するという技法だと思う。
0864デフォルトの名無しさん
2015/03/01(日) 23:03:40.02ID:rdPv98Ov型アノテーションが|0とかだけどw
0865デフォルトの名無しさん
2015/03/01(日) 23:08:36.72ID:00nc7/8R最適化の為に型指定もできるならCommonLispが好き
0866デフォルトの名無しさん
2015/03/01(日) 23:10:16.20ID:UZLeoZQm開発リソースの問題だろうけど、どうにかならんかなぁ
0867デフォルトの名無しさん
2015/03/02(月) 07:43:02.21ID:7j/cedut俺はnext行こうかなと思ってる http://next2 ch.net/tech/ <- NGワードなので空白入れ
もう書き込めなくなりつつあるらしいが
0868デフォルトの名無しさん
2015/03/02(月) 09:03:20.71ID:U7sAEcakそもそも専ブラでも読み書きできるものはあるしな
0869デフォルトの名無しさん
2015/03/02(月) 21:17:48.89ID:EDxcjXkc開発者にその気がないからでしょう。コンパイラ最適化には前向きだけど。
デバッグはプリントデバッグでいいだろうみたいな。
デバグ機能の貧弱さはかなり前から指摘されてるのにね。
0870デフォルトの名無しさん
2015/03/03(火) 20:40:23.58ID:wsPgJ5pW開発予定に入ってるし。
http://practical-scheme.net/gauche/devinfo-j.html
0871デフォルトの名無しさん
2015/03/03(火) 21:24:58.84ID:YZP0yr3o0872デフォルトの名無しさん
2015/03/03(火) 21:34:19.31ID:Z0dSwOUy0873デフォルトの名無しさん
2015/03/03(火) 21:46:03.53ID:YZP0yr3o0874デフォルトの名無しさん
2015/03/03(火) 21:47:32.44ID:Xj1iXzPO0875デフォルトの名無しさん
2015/03/03(火) 21:48:24.89ID:YZP0yr3o0876デフォルトの名無しさん
2015/03/03(火) 21:49:31.73ID:Xj1iXzPO0877デフォルトの名無しさん
2015/03/03(火) 21:55:52.38ID:wsPgJ5pWなくていいと思ってるわけじゃないよ。 皆が納得する方法が出てきてないだけ。
デバッガって動作モデルとのかかわりが密接だから今の段階で決めちゃうと色んなところに実装上の制約が付いてしまう。
優先順位からすると後回しにせざるを得ない。
0878デフォルトの名無しさん
2015/03/03(火) 23:02:36.83ID:r/2tg9ng0879デフォルトの名無しさん
2015/03/04(水) 16:59:22.87ID:j98GupsC評価モデルをもっと詳細に限定しないとデバッガの規格化は無理かと…
0880デフォルトの名無しさん
2015/03/04(水) 17:35:44.52ID:7DGSkK2uCLのSLIMEみたいな環境作りやすくするためにあれば良いのにって思ったけど複雑なんですね。
0881デフォルトの名無しさん
2015/03/04(水) 20:31:07.41ID:fTXSh4EnSchemeの委員会では永久に決まらないと思うよ。
0882デフォルトの名無しさん
2015/03/04(水) 22:38:43.46ID:fQkEMJLjだいたいデバッガを言語仕様に入れてる言語の方が少ないだろ。 つーか CL くらいじゃろげ。
0883デフォルトの名無しさん
2015/03/05(木) 00:48:28.30ID:qG2rkvqSむしろ継続はデバッグに役立ったりするものだと思ってた
0884デフォルトの名無しさん
2015/03/05(木) 21:52:44.84ID:NuwmT6bYSmalltalk「CLより話題にされない」
0885デフォルトの名無しさん
2015/03/06(金) 01:55:23.65ID:Dms4WI2A言語仕様あったっけ?
0886デフォルトの名無しさん
2015/03/06(金) 02:37:08.54ID:xxYE53/XANSIの規格があるよ
Schemeも実用面の規格を決めるワーキンググループ作ればいいのに
0887デフォルトの名無しさん
2015/03/06(金) 03:32:47.66ID:O/G8n7chR7RS-large のこと、ときどきでいいから思い出してください
0888デフォルトの名無しさん
2015/03/06(金) 17:42:23.91ID:fD9xUJrM仕様を大きく実用的にするんならCommonLispと変わらないのでは?
Schemeの存在意義は何なのだろう?
0889デフォルトの名無しさん
2015/03/06(金) 19:05:08.46ID:OWDvyc6M正しさ
0890デフォルトの名無しさん
2015/03/06(金) 22:20:46.48ID:8EAwhf++0891デフォルトの名無しさん
2015/03/06(金) 23:21:38.86ID:UY349KBP0892デフォルトの名無しさん
2015/03/07(土) 01:04:14.21ID:UBHk2s1QSchemeが目指すのは弱点や制約を取り除いていくこと。
実用面での不足があるという弱点を取り除こうとするのは当初からの存在意義通り。
例えばだよ、Lisp一般の話として、他のプログラミング言語では構文を追加できないという制約をマクロで取り払った。
これは制約からの解放ではあっても現実としてマクロ機能を追加してもいる。
でも、マクロを追加するのは、必要だからたくさんの構文を追加しましょうというのとは違うだろ。
ニュアンスを説明し難いけど、結論からすると全然違うよ。
0893デフォルトの名無しさん
2015/03/07(土) 07:00:57.60ID:xd/6S2NW実用的な機能はライブラリとして外部化しましょうという話だった。
しかしネットワーク周りなど、ライブラリ単体では対応しきれない部分が増えてきて仕様が拡大する方向になった。
Common Lispの場合はそういう機能は処理系ごとの独自拡張になっていて、それらの違いを吸収するライブラリがデファクトスタンダードになっている。
まさにカオス。
0894デフォルトの名無しさん
2015/03/07(土) 07:56:30.31ID:n1mOj6rBREPLも決めてないのに弱点を減らしてるとか言われても
0895デフォルトの名無しさん
2015/03/07(土) 09:25:38.24ID:UBHk2s1Q仮に決めるとしても今というのは早すぎる。
何が正しいのかわからない段階で決めるってのは足かせになるだけ。
つまり今のSCHEMEはまだまだ未完成な存在であると同時に、
急いで決めるとろくなことがないという思いによってそうなってる。
未定義の中で現れて現実の中で鍛えられた実装を元に仕様にフィードバックするという形
なので、ちょくちょく仕様改定するというスタンス。
0896デフォルトの名無しさん
2015/03/07(土) 11:09:13.35ID:+J/J7yz/20年後も同じこと言ってそうだ
0897デフォルトの名無しさん
2015/03/07(土) 11:51:27.13ID:zWLiFiwu0898デフォルトの名無しさん
2015/03/07(土) 13:14:14.81ID:UBHk2s1Q結果的に時間はかかるんだけど優先順位の問題だよ。
ダークコーナーだったトップレベルの挙動がR6RSで一旦決まったけど、
あれにREPLを持ち込むと破綻してしまうということははっきりしてる。
拙速ではあったけど正しいと思う形に (それまで決まってなかった部分の) 挙動を決めたら
REPLがはじき出されたんだよ。
REPLが絶対に必要でそこでの挙動が明確でなければならないとするなら、
正しいと思う形を曲げ (妥協し) なきゃいけない。
最終的には妥協するにしても優先順位がどちらかというと
REPLではないな。
0899デフォルトの名無しさん
2015/03/07(土) 15:12:16.07ID:8yn+ZBgr0900デフォルトの名無しさん
2015/03/07(土) 15:23:38.49ID:aKvU0ICu0901デフォルトの名無しさん
2015/03/07(土) 16:11:14.18ID:jlwQ27AMせめて「理想が高すぎて現実の女に興味をなくした」って言い換えようず
0902デフォルトの名無しさん
2015/03/07(土) 16:20:06.75ID:bJg/o0s7むむむ、今の俺だ
0903デフォルトの名無しさん
2015/03/07(土) 17:01:05.36ID:+J/J7yz/自分が失くすのは構わんが、今後新規に関わる人も皆当然興味を失くすのが前提になったらアウト
単純に「世の中の動きから取り残された」状況にならんことを祈るよ
0904デフォルトの名無しさん
2015/03/07(土) 17:34:03.61ID:UBHk2s1Q出来るかどうかは別として。
0905デフォルトの名無しさん
2015/03/07(土) 17:50:01.09ID:vVpvhS790906デフォルトの名無しさん
2015/03/07(土) 19:08:01.94ID:XTc1RaYc前に戻って読み返せばモヤモヤ晴れるだろうか?
0907デフォルトの名無しさん
2015/03/07(土) 19:15:10.49ID:xoLws0MD0908デフォルトの名無しさん
2015/03/07(土) 19:39:22.66ID:bJg/o0s7ま、それはさておき
the seasoned schemerとか
先に読むのはどうかねえ
ま、それがわかって
「なぁあるほどぉ、そういうことで
ああだってのね」
となることはあるだろうが
俺はもう一度、概念を把握する、作り上げで行くという姿勢で読み返したほうがいいと思うけどな
0909デフォルトの名無しさん
2015/03/07(土) 19:57:14.98ID:8yn+ZBgrその本はコンピューター専攻ではない学生のためのに
易しく再帰を説明した本なのだけど、逆に素質のある人には回りくどい。
もっと簡潔明瞭に書かれた本を読んでみては?
0910デフォルトの名無しさん
2015/03/07(土) 19:59:25.39ID:bJg/o0s7モヤモヤするのかね!!
0911デフォルトの名無しさん
2015/03/07(土) 22:06:15.10ID:n1mOj6rBうーん、たかがREPLもきちんと定義できないなんて…。
上の方で話題に出てたデバッガもそうだ。
現実的に有効な機能をきちんと定義するのに問題がある仕様なんて、穴だらけ過ぎるだろ。
0912デフォルトの名無しさん
2015/03/07(土) 22:08:51.33ID:dU/Etb220913デフォルトの名無しさん
2015/03/07(土) 22:13:14.95ID:fJ4fWqRj0914デフォルトの名無しさん
2015/03/07(土) 23:22:37.44ID:xyf+MLfm0915デフォルトの名無しさん
2015/03/07(土) 23:32:53.77ID:+J/J7yz/ヒトサマの作った処理系の上で俺様拡張風味の何かをしたい人には制限事項にしかならんけど
0916デフォルトの名無しさん
2015/03/07(土) 23:33:55.40ID:n1mOj6rB0917デフォルトの名無しさん
2015/03/07(土) 23:45:02.22ID:UBHk2s1QC++ に REPL がないのは穴か?
(厳密にはあるが本来の意味を大幅に外れないと成立しない。)
REPL を含めて厳密な意味論を定められる言語仕様の方が特異だろ。
ただ、 R6RS はひとつの完成系ではあっても急ぎすぎたと認識したから
R7RS では R6RS を踏まえつつもだいぶん後戻りした。
0918デフォルトの名無しさん
2015/03/07(土) 23:52:27.79ID:UBHk2s1Q色んな可能性があって、色んな実装が出てきて、
それでもやっぱり決まってしまったものが仕様になっていく。
今のところポータビリティがないという弱点はあるけど、
急いで埋めてヤワな土台にしてしまうのはSCHEME的でない。
0919デフォルトの名無しさん
2015/03/07(土) 23:59:59.70ID:kh22EAvYあくまでも実装の目安的な
0920デフォルトの名無しさん
2015/03/08(日) 00:06:10.63ID:mBgBNV1f健全な認識だなぁ
賛成
0921デフォルトの名無しさん
2015/03/08(日) 00:07:15.63ID:fkWa9Bdj実際少なくない人数がデファクトスタンダードの明文化だと思ってるよ
0922デフォルトの名無しさん
2015/03/08(日) 00:15:33.24ID:hAEoeYlm実務で使われる日なんか永遠にやって来ないよ
0923デフォルトの名無しさん
2015/03/08(日) 00:18:58.04ID:fkWa9Bdjもとも教育用だしな
実用したいなら現状ではCL一択だろ
0924デフォルトの名無しさん
2015/03/08(日) 00:19:19.58ID:GL0YGVUh0925デフォルトの名無しさん
2015/03/08(日) 00:23:32.09ID:9Ii0EqXh言語には思想があるんだよ
実用重視ならCL使えば?
逆にCLがあるからScemeは下手な妥協や拙速を避けてチンコじっくりいじりながらジリジリ歩めるんだし
0926デフォルトの名無しさん
2015/03/08(日) 00:25:25.12ID:7xd0W6kM日常作業に使うのと製品に組み込むのもまた違う
0927デフォルトの名無しさん
2015/03/08(日) 00:29:36.65ID:9Ii0EqXh俺もそれなりに使ってるよ
今のSchemeでは無理な実務ばかりじゃないもんね
異様に仕様で決めろいってる人が言葉の定義のなかで実用後どうたらといってるんだろ
「今のSchemeでは耐えられない実務にはSchemeは実用的でない。今の仕様に対する思想ではとても無理であろう実務にはSchemeはいつまでたっても実用的とはならない」
意味ないこと言ってますよね
あたかもCLの思想でSchemeの試用を決めろといってるがごとし
CLとSchemeの違いを
F-BASiCとN88-basicのような方言性とでも思ってるんじゃないかしらん
ゲゲ、例えが古すぎたぁん!
0928デフォルトの名無しさん
2015/03/08(日) 00:31:30.67ID:GL0YGVUh0929デフォルトの名無しさん
2015/03/08(日) 00:42:35.13ID:NIsrNg9tというのがストールマンの描いた絵だったはずだが。
0930デフォルトの名無しさん
2015/03/08(日) 00:47:05.40ID:7xd0W6kMgmake 4.0 のアナウンス見たときは正直笑った
ストールマンはきっと諦めない
0931デフォルトの名無しさん
2015/03/08(日) 01:45:51.41ID:0F9JK/taいっそS式で書けるmakeみたいなのなら
自動生成とかしやすくて使うかもしれんけど、
makeにSchemeのコードを埋め込めてもたいしてうれしくはないよな。
余計なお世話としか言い様が無い。
そんなことよりやることがあるだろうと小一時間問い詰めたい。
0932デフォルトの名無しさん
2015/03/08(日) 05:07:44.92ID:Byenq80Oその通り。実務ったって、いろんなのがあって。実質個人で使ってるだけなら仕様がどうとかどうでもいい。
大きな規模で使おうとするときに、ポータビリティーはありません、言語仕様はまた変わるかもしれません、
この処理系はバージョン1.0ですらないしデバッガはまだありません、
なんて言えないよ。
0933デフォルトの名無しさん
2015/03/08(日) 05:55:43.09ID:dM1B/3iRだから、そういうケースの実務には使わない
精神病なのかね
0934デフォルトの名無しさん
2015/03/08(日) 10:30:53.50ID:9sAHmNQQambがあったら自動でできることを
「アルゴリズムの効率化」
とか主張してるの2つぐらいあった
学生の発表なんてそんなものだよね
0935デフォルトの名無しさん
2015/03/08(日) 15:11:25.31ID:GL0YGVUh0936デフォルトの名無しさん
2015/03/09(月) 04:45:07.13ID:mG+quTtoよっしゃいくぜーーーーーーーふぉおおおおおおおおおおおおおおおおおおおおおおおーーー
0937デフォルトの名無しさん
2015/03/09(月) 13:44:41.18ID:v0Direyg0938デフォルトの名無しさん
2015/03/09(月) 14:00:47.82ID:MIiFNtq20939デフォルトの名無しさん
2015/03/09(月) 14:10:21.58ID:nX4ux0rb0940デフォルトの名無しさん
2015/03/09(月) 15:02:58.12ID:MIZIuI1f大会の質疑応答で言えよw
0941デフォルトの名無しさん
2015/03/12(木) 01:34:50.99ID:j/aB62lrみたいな人がSICPやOn Lisp読んだ事あったら恥ずかしくなるような
車輪の再発明を「新発見だ」みたいに発表してるのは
何度も見たことある
0942デフォルトの名無しさん
2015/03/12(木) 03:50:24.06ID:7OAll1Oe0943デフォルトの名無しさん
2015/03/12(木) 08:53:26.76ID:oXTZrsQT?
大丈夫?
0944デフォルトの名無しさん
2015/03/12(木) 10:22:25.20ID:7OAll1Oeほら、だから関わりたくない
レスするなよ
0945デフォルトの名無しさん
2015/03/12(木) 10:37:16.55ID:oXTZrsQT?
大丈夫?
0946デフォルトの名無しさん
2015/03/12(木) 10:50:33.86ID:uoklKat4俺は941を井の中の蛙にがっかりしていると受け取ったのだが。
0947デフォルトの名無しさん
2015/03/12(木) 11:14:57.59ID:S2kvzV7/0948デフォルトの名無しさん
2015/03/12(木) 11:51:29.85ID:oXTZrsQTたぶん荒したいだけなんじゃないかな?
あげ足とったつもりなんだろうけど。
0949デフォルトの名無しさん
2015/03/12(木) 12:21:34.48ID:8KPMPqV10950デフォルトの名無しさん
2015/03/12(木) 13:13:58.26ID:I+QZUs3iあと、既にライブラリが有るかもしれないと考えて探すのは結構手間だね。
0951デフォルトの名無しさん
2015/03/12(木) 15:02:07.74ID:AUktVMvd恥ずかしいのはそれを「車輪の再発明」だと思い込んでいる方かもしれん。
0952デフォルトの名無しさん
2015/03/12(木) 21:24:14.49ID:BlO2EFmAただ闇雲にやっても持続、徹底できれば、なにか生み出すことはある。
そのくらい勢いが重要なのがソフトウェアの世界。
0953デフォルトの名無しさん
2015/03/12(木) 22:59:35.87ID:BpQwY1yS投票理論なんかは車輪の再発明してくれたおかげで再興したわけだしな…
0954デフォルトの名無しさん
2015/03/12(木) 23:43:19.17ID:+1wqWj9Aはやく死滅するべし
0955デフォルトの名無しさん
2015/03/12(木) 23:47:40.76ID:BpQwY1yS0956デフォルトの名無しさん
2015/03/12(木) 23:50:01.94ID:8KPMPqV10957デフォルトの名無しさん
2015/03/12(木) 23:57:11.17ID:LXfZ/6pV新たな例えを発明しよう
0958デフォルトの名無しさん
2015/03/13(金) 00:00:24.56ID:FU516fsY牛の牛乳
馬鹿な馬
0959デフォルトの名無しさん
2015/03/13(金) 00:14:00.18ID:eoqJjB0gLispperの過半数がemacs使いじゃん
0960デフォルトの名無しさん
2015/03/13(金) 00:22:12.65ID:RKBSigws0961デフォルトの名無しさん
2015/03/13(金) 00:26:42.61ID:qOQded/Nメモ帳みたいなのでインデントを手動で調整してる人いる?
0962デフォルトの名無しさん
2015/03/13(金) 00:44:32.83ID:Z3IUNRM5ありえん
そんな苦労したくない
0963デフォルトの名無しさん
2015/03/13(金) 02:27:09.08ID:Ub5E2hhm他の言語では延々コードフォーマットの議論が続いている。
0964デフォルトの名無しさん
2015/03/13(金) 08:41:18.79ID:L2AAjpRPまだ使われてるのか? PythonやJuliaに移行したと思い込んでいた。
0965デフォルトの名無しさん
2015/03/13(金) 15:26:36.15ID:q9YHarJAこれはいよいよ移行先を考える時かもしれんね
0966デフォルトの名無しさん
2015/03/13(金) 15:54:27.09ID:xd+XZJxk0967デフォルトの名無しさん
2015/03/13(金) 17:08:52.83ID:Kz1GJ3Av0968デフォルトの名無しさん
2015/03/13(金) 18:55:44.10ID:rRn17oFI0969デフォルトの名無しさん
2015/03/13(金) 19:40:39.41ID:Z3IUNRM50970デフォルトの名無しさん
2015/03/13(金) 20:00:27.03ID:FU516fsY0971デフォルトの名無しさん
2015/03/13(金) 20:07:27.87ID:00b/bH0l0972デフォルトの名無しさん
2015/03/14(土) 04:01:37.91ID:jLXkoe980973デフォルトの名無しさん
2015/03/14(土) 11:12:40.35ID:4IdWRzeQ0974デフォルトの名無しさん
2015/03/14(土) 20:57:33.69ID:t9+30c8tR7RS準拠。高速でかつ使い勝手もなかなか。
0975デフォルトの名無しさん
2015/03/14(土) 21:02:08.89ID:ApfUTziF開発、デバッグ環境とプラットフォームサポートの面がもう救えないレベルで台無し
学習には向いてるけど実用しようとすると社会とか職場の方から拒否されるというか。
0976デフォルトの名無しさん
2015/03/14(土) 21:15:06.32ID:t9+30c8tSchemeはもともと学習用だよ。
違うのか?
0977デフォルトの名無しさん
2015/03/14(土) 21:19:24.27ID:ApfUTziF違わないから悲しいんじゃないか orz
0978デフォルトの名無しさん
2015/03/14(土) 21:20:24.07ID:t9+30c8t0979デフォルトの名無しさん
2015/03/14(土) 21:25:36.68ID:o8vTK2nf0980デフォルトの名無しさん
2015/03/14(土) 21:27:01.29ID:ApfUTziFな、なんだと!
とある言語つかっいて、ここで継続(言語でサポートされた)を使えればとか、俺schemeをIDEに統合(jvm上で実装なのに)することができたらとか、SLIME(CLってデバッグとか規格なんだよなー)は良いなぁとか
↑みたいな気持ちってまちがってるのん?
0981デフォルトの名無しさん
2015/03/14(土) 21:29:07.22ID:26umtMML違うよ。
0982デフォルトの名無しさん
2015/03/14(土) 22:19:55.01ID:mxloomuL?
0983デフォルトの名無しさん
2015/03/14(土) 22:20:38.35ID:Vvak8Yob0984デフォルトの名無しさん
2015/03/15(日) 00:58:41.19ID:+SwbGbdHLive2chもおk
0985デフォルトの名無しさん
2015/03/15(日) 11:11:55.51ID:9t7SNHfePlanner -> Conniver -> Schemer
ときたからさらにsneakyなLarcenyなんじゃない?
Gaucheに比べてけた違いに速い。デバッガもしっかり搭載されてる。
SRFIもほぼ網羅されている。Windowsへのポートもしっかりしている。
0986デフォルトの名無しさん
2015/03/15(日) 17:10:25.70ID:c2c0PQSQ>>237
だからぁ
バカは書き込み禁止な
暗記で勝負は低偏差値連中の発想だろう
英語といえば単語と熟語の暗記
数学といえば解法のパターンの暗記
でだ、東大も暗記勝負だとおもっているのが哀れすぎる
ま、日本では「車輪の再発明」をする勉強法はクソというやつ多すぎ
それが世界からバカにされること。
まず、自分で車輪を発明し現代にまで追いつくことが肝要。
欧米はその方針なわけだな。
ま、大学以前でそれを準備するわけだが
0987デフォルトの名無しさん
2015/03/15(日) 17:16:45.28ID:1sapWkKW知識の創出よりも、暗記や検索の方が価値があるというのが結論です
0988デフォルトの名無しさん
2015/03/15(日) 17:20:41.46ID:c2c0PQSQわははははは
バカは書き込み禁止な
0989デフォルトの名無しさん
2015/03/15(日) 21:12:14.80ID:VgUe2KPC自治厨やるなら次スレ立ててこいカス
0990デフォルトの名無しさん
2015/03/16(月) 00:55:02.57ID:EEYZoZ1i0991デフォルトの名無しさん
2015/03/16(月) 09:55:12.09ID:Y2MfWqZ60992デフォルトの名無しさん
2015/03/16(月) 13:47:13.38ID:EEYZoZ1ihttp://peace.2ch.net/test/read.cgi/tech/1426481152/
次スレ
0993デフォルトの名無しさん
2015/03/17(火) 09:53:40.93ID:DlMQwoSW0994デフォルトの名無しさん
2015/03/17(火) 10:24:35.15ID:k/LbPUX+乙です
レス数が950を超えています。1000を超えると書き込みができなくなります。