Lisp Scheme Part41 (855レス)
上下前次1-新
298: 2021/01/20(水)01:48 ID:9Gv1v6nA(1/2) AAS
alist vs plist はalistの方がassocが(lisp的な意味で)簡潔になるから?で一票
assoc[x;y] = eq[caar[y];x] → cadar[y];T → assoc[x;cdr[y]]]
M式、[x→y; ...はapplyによってS式(QUOTE (COND (x y ) …に展開される
外部リンク[html]:www-formal.stanford.edu
pdf17p
evalのボトムケースでもある大事なassoc、俺にはplist版は思いつかない
evenpが欲しいところだけど算術の定義がまだだし…
clのcx^nrがn=4までなのもcaddarまで使ってるからだろうかね
299(1): 2021/01/20(水)01:59 ID:9Gv1v6nA(2/2) AAS
ffとかappqとか見慣れない面白関数出てきて面白かった
first/restは単なるエイリアスでなくL-exp(線形リスプ?)における相似物としてちゃんと別に定義されてるとかも
あとpairがpairlisに改称した理由とか気になってる、次は1.5マニュアル読むか
小並感
300: 2021/01/22(金)02:54 ID:GlnM3g/q(1) AAS
consesのカッコのネストを無視して初めのシンボルを返すffは、左端の簡約だけで導出が決まる特性を持つコンビネータ計算(SKなど)にとても重宝する関数だよ
applyを.と見なせば(論理学記法で)SKx = ((S K) x)はcons((S . K) . x)と等価
.
/ \
. x
/ \
S K
(ff ((S . K) . x)) ; => S
ffでSを得て、そこへのaccessor は(dfs 'S '((S . K) . x))で4行程度で実装出来る、carで潜る時にはpush 'car、cdrならpush 'car、その枝で見つからなかったときにはpopでSへのアクセサ(car car)が得られて、そのノードを公式に従ってsetf '公式すれば導出完了
lispと言えばラムダってイメージあるとおもうけど、むしろコンビータと相性が良い、特にclのラムダは細かなコントロールを求めた代償として明示的なapply/funcallが必要だからなあ
あとdotprintとか定義しとくと便利ね
301: 2021/01/22(金)08:32 ID:hEWi2BMh(1) AAS
jmcはラムダ教徒だったろうになあ
いくらlispが形式言語処理向けとはいえ、機械的に処理するには置換が面倒過ぎる
302: 2021/01/26(火)22:54 ID:+x6NTk+g(1/2) AAS
>>299
app(ly)-q(uote)?直訳するとこんな感じか
(defun appq (m)
(cond (null m) nil)
(t (cons (list 'quote (car m)))))
(appq (cdr m))
>(appq '(a b c d e))
; ('a 'b 'c 'd 'e)
(jmcの)applyは関数fをコレにconsしてS式 (#'f 'a 'b 'c ...)を得ると
common lispではformの先頭は関数名かラムダじゃないとダメなのでevalには'funcallか'applyを追加でconsする必要があるので、組み込みevalを使う限りは循環定義だな
303: 2021/01/26(火)23:06 ID:+x6NTk+g(2/2) AAS
誤解してた
M式apply[f; args]の引数はシンボルなのでS式のapplyに渡ってくるのはfunction fじゃなくてシンボルfか
グローバルでdefunしたfなら多分呼べるはず、試してないけど
304: 2021/01/28(木)03:52 ID:52TUUvk8(1) AAS
cons-car-cdr公理主義者への反発として最近妙に感心してしまったポエムを貼っとく
外部リンク:arxiv.org
本当の基本関数はc、a、d、rでした
paulのon lispに載ってる(explode 'bomb) → (B O M B)がハマりそうと思い、実装してみたは良いけどなんに使うんだコレ…
楽しいからいいか
305: 2021/02/06(土)00:01 ID:7zAE1WPt(1) AAS
cxrとconsは表裏一体なので片手落ち
r•c = idになるからこそ
car•cdr = c•a•r•c•d•r = ca•(r•c)•dr = cadr
と読める訳であって
cxr • cons= id を成り立たせるにはcxons = id となるようなo, n, sも定義せねばならない
後はまかせた
306: 2021/02/12(金)22:14 ID:rBgVuMm7(1) AAS
わたばさんのところ見て知ったけど
井田昌之先生のHPで
bit 1996-4、5月号、Guy L. Steele Jr.『Scheme 過去◇現在◇未来』(訳 井田昌之)
などの歴史資料PDFが読めるね
307: はちみつ餃子 ◆8X2XSCHEME 2021/02/15(月)14:15 ID:GNSRFiac(1) AAS
Racket のメジャーリリース。
外部リンク[html]:blog.racket-lang.org
ついに Chez Scheme の実行エンジンを組み込んだものがデフォになった。
308: 2021/02/16(火)17:43 ID:05vP8Ot3(1/2) AAS
普通のやつらを超えろおじさんのarcヲチするのにちょっとracketしてるけどフレンドリーかつ尖ってるね
どんどん尖ってゆけ
309(2): 2021/02/16(火)18:27 ID:6gVrqubW(1/2) AAS
グラハムさんは今はBel言語では
310(1): 2021/02/16(火)19:02 ID:05vP8Ot3(2/2) AAS
>>309
現在の俺がもしjmcだったら?とか言い出したので見限った
今ざっと目を通しても目新しいところ、興奮するところが全然ないんだなこれが
外部リンク[txt]:sep.yimg.com
ofは便利くらいの感想しか出ない
あと整数nをnth nへオバロは、逆なんじゃないかな?
push n へオバロならforthライクに発展できるのに
おじさんは自分に求められてるのは変態テクニックやインスピレーションだと自覚しろ
311: 2021/02/16(火)19:13 ID:RZ7vFu0i(1) AAS
>>309
グレアムの方が近いはずだが
312: 2021/02/16(火)21:26 ID:6gVrqubW(2/2) AAS
>>310
言語が自分自身を書くことが出来る、ということをよりうまくやれれば
ってことでしょ
lisp1.5マニュアルを彼なりにアップデートしたいんだよ
313(1): 2021/02/17(水)03:29 ID:PFWUQJwx(1) AAS
関数やマウロの実体もリストというのはだいぶん振り切れていると思うがおまえらには目新しくはないのか>bel
314: 2021/02/17(水)03:49 ID:KZUgEKHz(1/3) AAS
>>313
むしろ昔ながら/手抜きlispがそんなもんでは
lit(eral)はマッカーシーのappqだし、elispは対話モードならちゃんとcarでlambdaが取れる
315: 2021/02/17(水)04:32 ID:KZUgEKHz(2/3) AAS
後は語り尽くされたlisp1/2の分化の話になるのでその辺はググって
316: 2021/02/17(水)04:57 ID:KZUgEKHz(3/3) AAS
補足
elの挙動は完全にバグいので忘れた方がいい、一方で関数実体はリストのサブタイプではないとヒューリスティックに判定されるのでそもそもill-defined
317: 2021/02/17(水)18:52 ID:zk5Pyjxw(1) AAS
アラン・ケイもそれを自分でやってみようとすることが重要だと言ってる
原始関数が変われば何もかもが変わるわけだから
変わった世界が良いのか悪いのか、は自己言及がどれだけよく出来てるかどうか
ということだと思うんだけど
つまり、僕らが使いやすいと感じるかどうかではなく
未来にそれに慣れた人たちがより効率の良い開発が出来るかどうか
で、グレアムは自分なりにBelは良く出来てると思ってるんだろう
オレにはよくわからんがw
318: はちみつ餃子 ◆8X2XSCHEME 2021/02/18(木)00:14 ID:k6/K1ymI(1) AAS
グレアムが現役プログラマだった時代なら実務に全振りしただろうが、今は投資する側の立場だからね。
投資に技術的な知見を活かしてはいるんだろうけど、道楽が出来るんだろう。
319(1): 2021/02/18(木)01:58 ID:lD1LwcuS(1/2) AAS
レディットで実装した人いるね
確かに使われてみなければ分からん事もたくさんあるので使ってみたい、まあ、そのうちね…
原典からlit=appqを引用(復古)するのなら、read&eval結果を示すのでなく、各々の挙動についてイメージできるように書いてほしい
とりわけlitは、302のレスにあるdefunをdefmacroに置き換えた定義(その場合(lit a b c)と記述できる)であっても、
より強力なreader macroによる、定義(e.g.quote)でも実装できるのだから、なおさら
320: 2021/02/18(木)02:07 ID:lD1LwcuS(2/2) AAS
でもグラハムは尊敬してるよ、著書もエッセイ以外紙版で全部持ってるし、啓蒙家としての実績を差し引いてもトップクラスのハッカーであるのは間違いない
321: 2021/02/18(木)03:15 ID:sRdwF113(1) AAS
>>319
言葉足らずでした
clは基本的にapplyへマクロを渡せないから、or/andに対応したsome/everyが提供されてるわけだけど、展開効率を無視すればread時に関数へすり替えるワークアラウンドで実現できる
そこが売りなんだからもうちょっと仔細を、と
322: 2021/02/18(木)06:11 ID:FG25zgsT(1) AAS
ゲイツ、ジョブズと同い年なんだよな
323: 2021/02/19(金)11:35 ID:VprFkjBX(1) AAS
・知能は高い
・こまかい技術用語をちりばめてくるので詳しそうと思わせる
・言語仕様と歴史的経緯と個人研究の区別をつける意識がない
・検証するとトータルとしては話が嘘
こまったもんだ
324: 2021/02/23(火)02:25 ID:VIkkm8/q(1/3) AAS
関数がリストで表せるからatomじゃないってのは気持ち悪いな
別にどんな言語であろうと関数定義はトークンの並び≒リストで書けるわで
論理学では関数や述語はそのシンボルと引数のリストとして書かれるにも関わらずatomと定義される、あんまり明るくないんでなんでそうするのかは知らんが
325: 2021/02/23(火)03:38 ID:aA0AvmX/(1) AAS
ELisp だと、一部の関数は本当にリストとして保持されてたりするんだよね。
ラムダ式そのままの形で。
だから car や setcar とかで中身にアクセスできちゃったり。
326: 2021/02/23(火)04:39 ID:VIkkm8/q(2/3) AAS
elのfunctionはid関数っていうね…知りたくなかった
関数定義をいじくりたいならformとして持ち回って、invokeする時にfunction噛ますのがベストプラクティスと思うよ、わりとよく見る
327: 2021/02/23(火)04:45 ID:VIkkm8/q(3/3) AAS
あ、後半はちゃんと関数を理論と整合するatomとして扱うlisp(clとか)への言及です
上下前次1-新書関写板覧索設栞歴
あと 528 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.022s