Lisp Scheme Part40 [転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん2015/03/16(月) 13:45:52.92ID:EEYZoZ1i
Common Lisp、SchemeをはじめとするLisp族全般のスレです

■前スレ
Lisp Scheme Part39
http://peace.2ch.net/test/read.cgi/tech/1408017352/

■テンプレ
ttp://wiki.fdiary.net/lisp/

■関連スレ
【入門】Common Lisp その11【質問よろず】
http://peace.2ch.net/test/read.cgi/tech/1411307361/
【Scheme】Schemeインタプリタ Mosh Part1【Lisp】
http://peace.2ch.net/test/read.cgi/tech/1272469779/
【Lisp】プログラミング言語 Clojure #3【JVM】
http://peace.2ch.net/test/read.cgi/tech/1380333808/
【魔法】リリカル☆Lisp【言語】
http://peace.2ch.net/test/read.cgi/tech/1183396621/

191デフォルトの名無しさん2015/08/03(月) 18:40:37.91ID:zmSfrGKJ
>>190
CSP?

192デフォルトの名無しさん2015/08/03(月) 23:15:17.18ID:TaloxJI9
継続渡しはCPS
セントラル警備保障はCSP

193SCHEME餃子 ◆8X2XSCHEME 2015/08/04(火) 03:41:56.42ID:T8IrycSA
JavaScript 処理系の Rhino は第一級継続を持ってる。 実在する以上、言語処理系レベルでは可能ってことだろ。
だけど、 Scheme 処理系でも外部のライブラリ (バインディングとか) を通過したところで継続が途切れてしまう制限を持っているものがあることからもわかるように、
継続が処理系の外の世界をまたぐのは難しいんだわ。
(※参考 Gauche のドキュメント http://practical-scheme.net/gauche/man/?l=jp&p=call/cc )

JavaScript はアプリケーションに組込んで使うタイプの言語だから、当然、外の世界とのやり取りはあたりまえで、
そこに第一級継続を持ち込んでも途切れまくりであんまり役に立たんのじゃないか?

Gauche のドキュメントには限定継続の利用を勧めるようなことも書いてあるけど、
フル継続で途切れてしまうところを越えられるって意味ではなくて、
継続の範囲を明確に書けるから変なところをまたがないように注意しやすいって意味だと思う。

194デフォルトの名無しさん2015/08/05(水) 21:47:02.17ID:PeKQT7A5
プログラミングGauche第2版マダー

195デフォルトの名無しさん2015/08/05(水) 22:50:49.33ID:Vg22nrpW
そういやGNU標準言語?だかのはずのguileって使われてるんだろうか

196デフォルトの名無しさん2015/08/06(木) 08:01:11.84ID:e5V4W5I+
待ちguile

197デフォルトの名無しさん2015/08/06(木) 22:25:04.23ID:JI2t4Gst
GNU自体微妙な団体だし
そんな団体の標準になられても気持ち悪い

198デフォルトの名無しさん2015/08/06(木) 23:00:12.98ID:lTjoYGg1
などとにわかschemerが申しております

199デフォルトの名無しさん2015/08/06(木) 23:14:11.05ID:oTKkGTU7
guile って死んでると思ったけど、
結構頑張ってんよ

200デフォルトの名無しさん2015/08/06(木) 23:18:25.94ID:FMimP/gx
unicodeサポートが微妙だったのはもう昔の話なのかな?なんかそれで使うのやめた事がある

201はちみつ餃子 ◆8X2XSCHEME 2015/08/07(金) 01:10:45.06ID:p6pvn2Md
アプリケーションに組込むなら小さい実装の方がいいよな。 Guile は豪華すぎると思う。
かといってリッチな実装というカテゴリだと Racket が強いから Guile は微妙ということに……。
Guile の強みって何?

202デフォルトの名無しさん2015/08/07(金) 01:54:27.51ID:JnTUt1UO
javascriptでscheme組もうと思う
クロージャあるし継続なしで末尾再帰ぐらいなら結構楽勝かな

203デフォルトの名無しさん2015/08/11(火) 14:35:52.92ID:3YusrhQW

204デフォルトの名無しさん2015/08/11(火) 16:13:30.65ID:XEwrhpMG
>>203
ワラタ

205デフォルトの名無しさん2015/08/12(水) 16:29:28.90ID:lGV/dlKr
racket で raco を使って exe 化したらやたらサイズがデカいのが出来たんだけど、
もっと小さくできないものなん?

206デフォルトの名無しさん2015/08/12(水) 23:13:39.90ID:G8qcToBK
自作処理系だと4KBセクタに収まるようにできる
512バイトブロック単位だが
けどschemeコアも含めたりすると結局数十KBにはなる
イメージまるごとexeにするタイプなら
参照切りまくれば小さくなるんじゃないの

207デフォルトの名無しさん2015/08/16(日) 22:04:26.74ID:AZvBPnTZ
Biglooの生成するcコードは恐ろしくシンプル

208デフォルトの名無しさん2015/08/22(土) 09:25:17.20ID:F2lrgiaF
そっかー。

209デフォルトの名無しさん2015/08/25(火) 18:08:56.22ID:8WHoFpvi
初めまして。
早速ですが教えて下さい。
下のcall/ccの定義を解説できますか?

(define call/cc
(lambda (k f)
(f k (lambda (dummy-k result)
(k result)))))

210はちみつ餃子 ◆8X2XSCHEME 2015/09/05(土) 21:46:57.65ID:H6CjR/B1
例えば RnRS の call/cc を使ってこういうのを書いたとする。

(define (foo x)
(+ 3
(call/cc
(lambda(cc)
(if (> x 3) (cc (+ x 1)) x)))))

(display (foo 1)) (display (foo 5))

継続とは何かというのを綺麗に説明するのは難しいけど、
「残りの計算」という言葉で説明するのが一般的だね。
この例でいえば call/cc を呼出された後にするはずの計算、
すなわち「 (+ 3 」が変数 cc に入っている継続。
call/cc を呼出している外側全てと言い換えてもいいかもしれない。
(字句上の外側ではなくて実行時の外側。)
で、 >>209 の言うところの call/cc (名前がまぎらわしいから
ここでは call/cc* と変える) は残りの計算を陽に引数として
渡すバージョンということだと思う。
最初の例を call/cc* で書き直すと

(define (foo* x)
(call/cc*
(lambda(x)(+ 3 x))
(lambda(cc f)
(if (> x 3) (cc (+ x 1)) (f cc x)))))

(display (foo* 1)) (display (foo* 5))

となる。
「(+ 3」の計算を (lambda(x)(+ 3 x)) というクロージャにして渡しているのが
わかるかな。

211デフォルトの名無しさん2015/09/05(土) 22:53:19.39ID:6dKeptfV
>(+ 3 (call/ccc
式中の副作用(call/cc)は評価順序不定の罠が
判ってると思うけど一応

212デフォルトの名無しさん2015/09/05(土) 23:07:18.97ID:6dKeptfV
ついでにこの式の評価順序ってR6RS以降で何か変わったのかなーと思って調べたら変わってないっぽいね
式を多用するlisp族ではついつい書いてしまうからどっちかに決めた方がいいと思うんだけどな
継続は一見副作用に見えなかったりするからややこしい
そういや評価順の問題ってトップレベルにもあったなあ

213デフォルトの名無しさん2015/09/06(日) 07:10:29.28ID:dcG52JSd
横から初心者が何だけど、
>>209の定義のdummy-kって別に無くてもよさそうなんだけど、何か必要な理由って有るのかな?

214デフォルトの名無しさん2015/09/06(日) 11:19:24.63ID:EuTLUxQt
>>210
その例だと継続使っても使わなくても結果が変わらないので微妙。
fを適用する先も間違ってるし。

こんな感じでどうでしょう。

(define (foo x)
(call/cc
(lambda(cc)
(+ 3
(if (> x 3) (cc (+ x 1)) x)))))

(define (foo* x)
(call/cc*
(lambda (x) x)
(lambda (cc f)
(let ((ncc (lambda (x) (cc (+ 3 x)))))
(if (> x 3) (f ncc (+ x 1)) (ncc x))))))

215デフォルトの名無しさん2015/09/06(日) 11:26:17.13ID:EuTLUxQt
連投すまぬ。
引数の名前がきちんと対応していなかったのでfoo*を書きなおした。

(define (foo* x)
(call/cc*
(lambda (x) x)
(lambda (f cc)
(let ((g (lambda (x) (f (+ 3 x)))))
(if (> x 3) (cc g (+ x 1)) (g x))))))

216デフォルトの名無しさん2015/09/06(日) 17:16:35.78ID:AiMOxC1Q
>>215なら素直に理解できた
要するに、これは継続渡しのスタイルの中で使えるcall/ccってことか

あと、さっきの例をちょっといじって
(define (foo& x k)
(call/cc*
k
(lambda (f cc)
(let ((g (lambda (x) (f (+ 3 x)))))
(if (> x 3) (cc g x) (g x))))))

(foo& 1 (lambda (x) (display x)))
としたほうがわかりやすいかもしれない

217デフォルトの名無しさん2015/09/28(月) 20:36:46.42ID:uH2NkENy
LFE(lisp flavor erlang)使ったことあるかたいますか?
どの辺が問題なんでしょうか。
バックエンドがerlangというのは大きいメリットだと考えるんですが。

218デフォルトの名無しさん2015/09/29(火) 00:25:57.14ID:jGfSnnbY
>>217
使われない理由っていうことでいうと、↓のような感じかな。
読み直したら全面的にdisってるが、おもちゃとしては面白いと思ってる

・開発リソースが少ないのでおもちゃの域を出ない
特に、Common LispもしくはClojureを置き換えるほどのライブラリ・
成熟度・勢いは無い。

・そんなに速くない

・Erlang/BEAM自体の需要が少ない
Erlangスレでも書いたことがあるんだが、開発の現場でErlangを本当に必要とする
場面というのは少ない。良くも悪くもフォーカスを絞った言語だから。
エラー処理が楽とかいう人も多いが、乗り換えるほど大きなメリットでは無い
また、現実問題として、システム全部をBEAM上に載せる必要は無い。
一部だけErlangで書けば良いし、そのために
微妙な成熟度の微妙なLisp方言を入れる必要性ってあんまり感じられない

なお、Elixirで騒いでいる人たちも、Erlang系だからってよりはRubyっぽい
関数型言語っていう表面的な特徴で一時的に騒いでいる人の方が多い

・名前がダサい。これは馬鹿にできない

219デフォルトの名無しさん2015/09/29(火) 06:19:23.89ID:nAejDDAX
>・そんなに速くない
これはBEAM特有の問題なんだよね、数値計算がちょっとでもはいるととても遅い
非同期IO処理だけさせるような所だとElixir含めてErlang系はものすごく便利だけど読める人が少ないし

2202172015/09/30(水) 12:49:12.74ID:dQB3jeSs
>>218 さん、
>>219 さん、
ありがとうございました。

Common Lispのライブラリが使えれば状況良くなるのかなぁ
※Lispはこれから勉強するのでどの程度違うものかは判っていなくて言っています。

221デフォルトの名無しさん2015/10/06(火) 06:05:05.21ID:fg1OrsOi
haskellのlhs2texみたいなのって
LispやSchemeにはないの?

222デフォルトの名無しさん2015/10/11(日) 20:09:11.90ID:03dbVZHf
あかんなぁ
俺、馬鹿になってきた
年ってやつかなぁ
Common Lisp始めたけど、あれこれの関数名をすぐ忘れる。
駿馬も老いては駄馬なんとかか

223デフォルトの名無しさん2015/10/11(日) 20:09:38.43ID:03dbVZHf
因みにことし還暦な

224デフォルトの名無しさん2015/10/12(月) 12:06:44.75ID:traP+X+b
>>223
不惑や知命でもぼける人はぼけちゃうからねぇ

225デフォルトの名無しさん2015/10/13(火) 07:25:53.71ID:g15eXpvx
Schemeでsyntax-case使うとき、マッチングの第一要素にkって名前をよく見るし使うけどこのネーミングになんか由来とか理由とかあります?
なんで?って聞かれて答えられないんですが

226はちみつ餃子 ◆8X2XSCHEME 2015/10/13(火) 08:36:38.14ID:4fZWo+Bs
ソースがあるわけじゃないが自分は keyword の k だと思ってた。
仕様の中にある例でも k 使ってるからほとんどの人はそれに倣ってるだけだろうけど。

227デフォルトの名無しさん2015/10/13(火) 09:30:22.70ID:3mL35rpK
i と j じゃ整数の印象が強いんで、次の k を使ってるだけかと思った

228はちみつ餃子 ◆8X2XSCHEME 2015/10/13(火) 10:41:06.68ID:4fZWo+Bs
このあたりの例で使ってる i はたぶん identifier の i じゃないかと思う。
http://www.r6rs.org/final/html/r6rs-lib/r6rs-lib-Z-H-13.html#node_sec_12.7

t は疑問の余地なく temporary だな。 p は pattern で e は expression ってところか。

229デフォルトの名無しさん2015/10/13(火) 20:14:54.52ID:gIZRbrc0
>>228
scheme限定のイディオムなんかね
clojureだと
(defn hoge [coll] (brabrabra))
coll(collection)をわたすんだぞーってイディオムになってるみたいな?

230はちみつ餃子 ◆8X2XSCHEME 2015/10/13(火) 21:10:40.41ID:4fZWo+Bs
パターン変数には全部頭に ? を付けるとかいう流儀もあるし、
そんなに確立したものではないと思うけどね。

231デフォルトの名無しさん2015/10/23(金) 16:08:32.51ID:vFqEchXB
マクロの空をつらぬいて

232デフォルトの名無しさん2015/10/23(金) 18:13:51.87ID:vFqEchXB
継続にkを使う人達もいる

233デフォルトの名無しさん2015/10/23(金) 19:54:46.64ID:PxOWJO4j
>>232
constantな値にkFoo,kBarってつける習慣もあるからcontinuationにkプレフィックスはそんなに違和感持たないなぁ
class指向な処理系で classって名前使えないからClass klass = someObject.class って書くようなものかと思うのであるよ。

;;; 実は歌の続き?としばらく悩んだ

234デフォルトの名無しさん2015/11/01(日) 09:01:12.26ID:FL14q5P6
理解重視でオレオレlisp処理系をhaskellで書いててこれを改良しようとしてます
環境は[(名前,値)]というわかりやすい実装でラムダ式本体部を引用するとこんなのです
let env' = (zip param args) ++ closure ++ env in
last $ map (eval env') body
これって開発言語のスタックを使った実装になりますよね?
このコードはapplyの一部で、evalとapplyの相互再起の中の1コマなのですが
よく末尾再帰とかいいますがああいうのはどうやって判定するのですか?

235デフォルトの名無しさん2015/11/06(金) 12:34:46.91ID:R0CwBCQp
そろそろ何か書き込みないとスレが落ちる?

236デフォルトの名無しさん2015/11/06(金) 15:41:26.45ID:vgByJdCj
それは大変だ

237デフォルトの名無しさん2015/11/06(金) 19:56:44.02ID:FxVaFUyP

238デフォルトの名無しさん2015/11/06(金) 22:19:04.69ID:dYcAh74V
schemeはいい線行ってたと思う
不幸なのはほとんどの機能がjavascriptで足りてしまったこと
大多数の人は末尾再帰すらないjavascriptでいいと言う
繰り返し処理と言えばループしか脳から出てこないんだから
再帰はおろか末尾再帰なんか知らないだろう
再帰処理もスタック構造のコンテナとループで同じことができるんだから
実際知らなくても困らない

239デフォルトの名無しさん2015/11/07(土) 00:27:31.67ID:iMLfUYTc
JavaScriptの末尾再帰はもうすぐ実装されるし高階関数もずいぶん前からあるが

240はちみつ餃子 ◆8X2XSCHEME 2015/11/07(土) 01:25:53.28ID:OLp/9/w8
WebAssembly が一般的になったら JavaScript の勢力は (クライアントサイドでは) 過去の資産を除いてフェードアウトしそう。
そのときこそ Scheme の復権が狙えるかもしれないぞ。

241デフォルトの名無しさん2015/11/07(土) 11:42:14.37ID:Lam93S6q
>>234
末尾コンテキストを判定する
末尾コンテキストの実行時はフレームで確保したスタックは使われない
よってその直前で削除してしまえるから関数呼び出し等でもループに置き換えられる
(define a (lambda (x y) (b x y) (a x y)))
の最後の(a x y)は末尾コンテキスト
最後のa呼び出し前のx yの引数の積み上げが完了した時点でaのフレームは削除できる
削除した後aを呼び出すとまた同じフレームレベルでaの処理が開始する

242デフォルトの名無しさん2015/11/07(土) 12:03:06.20ID:Lam93S6q
末尾コンテキストの伝播
tを末尾コンテキストとする
(lambda ()・・・t)
(if test t t)
(begin ・・・t)
(lambda()・・・・t))
組み合わせると次のように末尾コンテキストが伝播する
(lambda ()・・(begin ・・・×)・・・(begin ・・・(if test t t)))
×は親が末尾コンテキストでの実行でなければ子も末尾コンテキストにはならない事を示す

243デフォルトの名無しさん2015/11/07(土) 12:15:41.27ID:Lam93S6q
関数適用の末尾コンテキスト
上で(a x y)を末尾コンテキストと書いたが
より正確にはtの呼び出し時点が末尾コンテキストとなる
表記的には(t 引数)となるがt自身がいつ評価されるかはschemeでは規定されていない
よって処理系の都合順にt x yを評価した後、tの呼び出し前に末尾コンテキスト処理(フレーム削除等)が発生する

244デフォルトの名無しさん2015/11/07(土) 12:37:03.29ID:Lam93S6q
末尾コンテキストが移動する構文
(set! var exp)
(while test body)
set!はvarがフレーム内変数ならexpの評価、フレーム外変数ならvarをexpの結果で破壊した時点が末尾コンテキストになる
whileはtestで偽になった時点かbody内からbreak等で抜けた時点だが、
そもそもschemeでのループ構文は末尾再帰の構文糖衣として定義されることが多く、この限りではない

継続呼び出しの末尾コンテキスト
継続呼び出しは継続を保存した位置に移動すると共に環境も入れ替わるため
末尾コンテキストの対象外となる(考慮しなくて良い)

245デフォルトの名無しさん2015/11/09(月) 10:47:59.41ID:zOMtLBxM
http://tech.grammarly.com/blog/posts/Running-Lisp-in-Production.html
割と知られている英文法チェッカーがCommon Lispだった

246デフォルトの名無しさん2015/11/09(月) 15:11:05.97ID:nI2VMo2q
ドクじゃん

2472342015/11/09(月) 20:47:58.44ID:uBSPw/8w
>>241-244 素晴らしいIDですね
末尾コンテキストの伝播については理解できたと思います
ifは末尾コンテキストが2つに増えるので
もしif文が末尾に連なってたら末尾コンテキストがたくさんになるわけですね
これを使って末尾コンテキスト判定をするis-tailrecみたいなのを作れば
考え方として、関数fの定義でもしis-tailrecが真となる箇所以外でfが
呼ばれていれば末尾再帰でないと判定すればいいですよね
set!の部分がちょっとまだ理解できてませんが考えてみます

>>237
紹介サンクス
かなり読みやすくなってる気がする

249デフォルトの名無しさん2015/11/11(水) 14:40:05.71ID:oQgebZ0I
Haskellのclassとinstanceに相当する型演算をSchemeで擬似的に作る方法ないのだろうか

250はちみつ餃子 ◆8X2XSCHEME 2015/11/11(水) 17:14:51.88ID:ECN7vnC1
Picrin にはそんな感じのオブジェクトシステムが入ってるよ。
作者による紹介記事がある。

http://wasabiz.hatenablog.com/entry/2015/01/12/170025

クラスじゃなくてプロトコルという名前になってるけど、やってることはほぼ同じ。

実装はこのあたり。 意外に小さい。

https://github.com/picrin-scheme/picrin/blob/master/contrib/50.class/piclib/picrin/class.scm
https://github.com/picrin-scheme/picrin/blob/master/contrib/80.protocol/piclib/picrin/protocol.scm

251デフォルトの名無しさん2015/11/11(水) 18:24:03.85ID:hvXzryLw
ピクミンかと思ったらピクリン

252デフォルトの名無しさん2015/11/17(火) 21:41:10.87ID:j2zk6VQe

253デフォルトの名無しさん2015/11/18(水) 02:32:25.06ID:3JxuKBB4
うーん、、、、

254デフォルトの名無しさん2015/11/18(水) 06:45:07.50ID:D8xoadz9
>>252
何だこれ。晒してるつもりなのか?
こんなことすべきじゃない。

255デフォルトの名無しさん2015/11/18(水) 13:46:02.89ID:mDzX1/ZQ
>>252
これ読んでいるだけでも、すごく勉強になるよな

256デフォルトの名無しさん2015/11/19(木) 00:09:30.94ID:d0YkbYhs
なるよな?
同意を求めないで欲しい
気持ち悪いbot作ったなーとしか…

257はちみつ餃子 ◆8X2XSCHEME 2015/11/19(木) 00:38:47.15ID:cuUnetrq
SICP は専門書なわけで、どこの 140 文字を抜き出したって勉強になるってほどの情報量ないよ。

258デフォルトの名無しさん2015/11/19(木) 00:46:43.61ID:dXEAV4H+
情報量うんぬん以前に
何言ってんのかわからない
日本語なのか
これは

259デフォルトの名無しさん2015/11/19(木) 00:51:29.41ID:dXEAV4H+
ワードサラダにしか見えん

260デフォルトの名無しさん2015/11/19(木) 01:04:54.84ID:H4K8uZul
変な翻訳を抜き出して笑うためのbotだと思うんですけど
SICPで翻訳と言えば例の翻訳炎上のはてブ勢の気持ち悪いこと気持ち悪いこと

261デフォルトの名無しさん2015/11/19(木) 02:17:36.76ID:sAMKa/4u
アスぺの人、和田訳を執拗に擁護するのはなんなんだろうな
専門知識で足りない英語力を補っているから、minghai訳よりはマシって程度なのに

262はちみつ餃子 ◆8X2XSCHEME 2015/11/19(木) 03:23:10.97ID:cuUnetrq
>>260
笑うためってのは言い過ぎだと思うけど、まあ、余興だよな。

263デフォルトの名無しさん2015/11/20(金) 01:28:32.20ID:sUCS+w9M
和田訳こそ英文が読めなくて、日本語を適当にでっちあげた
真鍋のいうところの腐臭のする糞訳なのに、
どういうわけか擁護するんだよな

264デフォルトの名無しさん2015/11/20(金) 21:27:40.60ID:ph+B6Bvv
擁護とか一体何と戦ってるんだこのおっさん

265デフォルトの名無しさん2015/11/20(金) 22:14:38.36ID:qdgYLPrR
照り輝くbotはもともと糞訳をまとめたおもしろbotだろ
そもそも照り輝く自体相当前からネタにされてるし

266デフォルトの名無しさん2015/11/21(土) 00:58:11.83ID:ACMxKEDN
糞約とはいえ他人の著作物云々の問題はクリアしてるのか?

267デフォルトの名無しさん2015/11/21(土) 01:23:42.79ID:ksFSpKOf
SICPを糞訳と言うと、おかしな連中が絡んできて面倒だったけど
これからはこれ貼るだけですむから楽でいいわ
https://twitter.com/illmnt_SICP_ja

268デフォルトの名無しさん2015/11/21(土) 02:17:10.09ID:kXonXFHs
>>260
はてブ気持ち悪いのだけ一貫してて主張がコロコロ変わってて面白い
主張は変わってないのに同じ人が擁護したと思ったら次の記事には叩いてんのな

269デフォルトの名無しさん2015/11/21(土) 03:16:47.47ID://2/HV1n
推奨NGワード: illmnt

270デフォルトの名無しさん2015/11/21(土) 04:49:29.21ID:pdN059iT
機械翻訳みたいな変な訳ばっかり
こういうのダメ出しするのも出版社の仕事だろ
アメリカの教科書はリーダブルじゃなきゃならないと聞くが
悪文で書いた教科書なんてのはそれこそ日本の悪文化だよ
ましてMITの教科書を改悪、悪文化するのはおかしいゾ

271デフォルトの名無しさん2015/11/21(土) 04:50:19.99ID:pdN059iT
まして、はおかしいか。俺も悪文化。

272デフォルトの名無しさん2015/11/21(土) 09:08:25.40ID:bRToh1Ye

273デフォルトの名無しさん2015/11/28(土) 18:52:48.98ID:D0YQLzhL
プログラミングGauche尼で売り切れてオライリーが入荷待ちなんだけど
絶版?第2版?

274デフォルトの名無しさん2015/12/02(水) 00:31:49.93ID:amR8vvu9
>>213
ラムダ式返したい

275デフォルトの名無しさん2015/12/15(火) 02:43:12.56ID:SCkT4Wmk
本当はLisp使いたいのに急ぎだとpythonとかbashで使い捨てスクリプトを書いてしまう

276デフォルトの名無しさん2015/12/15(火) 02:54:48.05ID:RaTSkkL3
そうか。

277デフォルトの名無しさん2015/12/15(火) 12:22:58.17ID:HzjVt2sa
それで良い。

278デフォルトの名無しさん2015/12/16(水) 10:19:05.23ID:7XnugsYC
(定義 (長さ リスト)
 (もし (空? リスト)
  0
  (加算 1 (長さ (残余 リスト)))))

279デフォルトの名無しさん2015/12/16(水) 13:19:26.38ID:RBWQyPz5
(定義 (右から畳み込み リスト 乗算 単位元)
(もし (空? リスト) 単位元
(乗算 (車 リスト) (右から畳み込み (残余 リスト) 乗算 単位元))))

280デフォルトの名無しさん2015/12/16(水) 13:30:51.38ID:7BuiFt2H
「車」…w

281デフォルトの名無しさん2015/12/16(水) 14:27:37.96ID:V4z/b3Ey
(管 リスト)

282デフォルトの名無しさん2015/12/17(木) 08:55:39.39ID:hUsjEVq7
Schemeを勉強しだす→「なんてシンプルかつエレガントなんだ!これさえあれば何でもできそうだ!」
Schemeで何か作ろうとしだす→「なんて面倒なんだ!CommonLispみたいに統一してくれよ!」

「R{5,6,7}RS準拠だぞ」
「けどここは各実装で好きにしていいぞ」
「皆自分でSchemeを作るんだぞ」

283デフォルトの名無しさん2015/12/17(木) 19:15:09.86ID:WdhrFOHs
Scheme は「俺自身が Scheme になる事だ」が奥義だから

284デフォルトの名無しさん2015/12/17(木) 23:13:43.49ID:kltDf5Nv
(もしもし? もしもし? ただいま留守にしております お掛けになった電話番号は)

285デフォルトの名無しさん2015/12/18(金) 00:12:22.66ID:OqK6hc4t
> 俺自身がscheme
それは違うが

286デフォルトの名無しさん2015/12/18(金) 02:10:52.71ID:FhfWj/9P
真の Scheme は世界で俺だけだもの

287デフォルトの名無しさん2015/12/18(金) 02:18:32.82ID:OqK6hc4t
「俺の母語はschemeだぞい」とかいうなら分かるんだけど。
俺がschemeってどういうことよ?もっと具体的に。

288デフォルトの名無しさん2015/12/18(金) 06:05:40.32ID:dzRG5p0J
俺がガンダムだ! 的な。

289デフォルトの名無しさん2015/12/18(金) 11:39:18.75ID:8LE7CEy/
今度生まれる時は側溝に生まれたい的な

290デフォルトの名無しさん2015/12/18(金) 12:10:58.73ID:eorQTm9j
マジレスするとオサレマンガの台詞

291デフォルトの名無しさん2015/12/18(金) 21:41:51.11ID:px/TD8Yb
> 俺自身がscheme
これは自分にはかなり納得がいく言い方だった。
自分はC++が主なんだけど、schemeを学んでから、その知見を取り入れて、
C++のスキルが顕著に上がったと思う。
自分の書くコードの質も、先輩の書いたコードに対する読解力も。
なんというか、schemeで考えてC++で書くようになったというか。

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