Lisp Scheme Part41 (855レス)
Lisp Scheme Part41 http://mevius.5ch.net/test/read.cgi/tech/1531587928/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
281: デフォルトの名無しさん [sage] 2021/01/12(火) 00:03:51.23 ID:XqNkUArk 連投してごめんだけど、環や分岐がポインタ使わず自在に描けるのはかしこいsetfの寄与もある、って書き忘れてた(schemeはset-cdr!だっけ) 念のため http://mevius.5ch.net/test/read.cgi/tech/1531587928/281
282: デフォルトの名無しさん [sage] 2021/01/13(水) 22:45:17.14 ID:c60O+Iz7 >>279 興味深い内容をありがとう ちょこちょこ遊んでいるだけなので到底そこまで使いこなせる気がしないけど、 データをプログラム中にストレートに表現して操作できるというのはよく分かる 他の言語だとデータを保持するためにわざわざクラス設計からしないと いけないような強迫観念にかられるけど、lispはそういう気にならない http://mevius.5ch.net/test/read.cgi/tech/1531587928/282
283: デフォルトの名無しさん [sage] 2021/01/14(木) 12:13:04.15 ID:/NlgSZrU データ型を定義しないのはトイプログラムだけだけどな Lispはリストだけ使うのが通だとか善意で広めないでくれよ http://mevius.5ch.net/test/read.cgi/tech/1531587928/283
284: はちみつ餃子 ◆8X2XSCHEME [sage] 2021/01/14(木) 22:43:13.17 ID:9qLPLWCT (カッチリした型を中心にする言語に比べれば) 最初はラフに 書き始められるというのはあると思うよ。 でも、そのままだと千行くらいの規模でももうだいぶんキツいんじゃないかな。 人によってはコードを書く腕力 (?) というか強引に行けちゃう人もいるけど、 雑に試行錯誤できるということとそこから部品として確立するのは別の段階なので、 試行錯誤で弄ってるときと同じノリでどんどん拡大していったら すぐわけわからんようになる。 世間で思われているよりは型
定義はすると私も思う。 http://mevius.5ch.net/test/read.cgi/tech/1531587928/284
285: デフォルトの名無しさん [sage] 2021/01/15(金) 01:43:39.29 ID:Hai3vgIl そういう後付けのボイラープーレトにはCLOSやジェネリックよりコンパイラマクロが便利ね http://mevius.5ch.net/test/read.cgi/tech/1531587928/285
286: デフォルトの名無しさん [sage] 2021/01/15(金) 21:24:11.84 ID:6113KkR6 ここでいう型定義はdeftypeのことを指しているのでしょうか http://mevius.5ch.net/test/read.cgi/tech/1531587928/286
287: はちみつ餃子 ◆8X2XSCHEME [sage] 2021/01/16(土) 09:43:26.51 ID:uH9KWN6j Common Lisp でなら deftype とか defclass とかいったものを使うことになるんかな。 私は Scheme しか知らんからよくわからんけど。 http://mevius.5ch.net/test/read.cgi/tech/1531587928/287
288: デフォルトの名無しさん [sage] 2021/01/17(日) 08:06:30.53 ID:MtDeBO+C >>285 嘘でしょ 人口無能が生成した文かこれ http://mevius.5ch.net/test/read.cgi/tech/1531587928/288
289: デフォルトの名無しさん [sage] 2021/01/17(日) 11:47:31.37 ID:9ajuvsmH >>288 defgeneric/methodは勢いで書き上げた触りたくないコードに機能追加するにはコード触らなくちゃならない 型の付いていない複雑なconsはどうせdestructuring-bindして振り分けるしかないんだから分けてdefmethodする利点もない define-compiler-macroなら一切既存のコードに触れる必要は無いからすごく便利だよ 既存のライブラリに手を入れたいけど、直接書き換えるとアップグレードで無かった事にされるから嫌、って時にも活躍する もちろんリファクタリン
グ出来るならした方がいいけど、取り敢えず動けば良い時の話ね http://mevius.5ch.net/test/read.cgi/tech/1531587928/289
290: デフォルトの名無しさん [sage] 2021/01/17(日) 12:14:47.80 ID:fZnccXPg この場合、 alist はどっち側に分類されるのかな… 個人的にはだいたい alist で済ませてるけど。 http://mevius.5ch.net/test/read.cgi/tech/1531587928/290
291: はちみつ餃子 ◆8X2XSCHEME [sage] 2021/01/17(日) 12:16:55.56 ID:ERThMJgw Lisp 的なスタイルだとかなり短いサイクルで開発が進むので、 リファクタリングしないまま手の付けられないほどグダグダになった状態は単にサイクルを 回すのが下手なように思うんだけど。 まあ上手くいってないときでもどうにかする方法があるのはありがたい話ではあるけどさ。 http://mevius.5ch.net/test/read.cgi/tech/1531587928/291
292: デフォルトの名無しさん [sage] 2021/01/17(日) 12:22:48.91 ID:16Ro+9sx 既存のコードには手を入れず振る舞いだけに着目して付け足して行くってスタイルはaspect oriented programmingとか言うんだっけな まあ盲で付け足してゆく事と同義ではないが http://mevius.5ch.net/test/read.cgi/tech/1531587928/292
293: デフォルトの名無しさん [sage] 2021/01/17(日) 12:36:52.37 ID:16Ro+9sx >>290 plistの方が好きだな、pprintでkey-valのカラムに並べられるし、alistが要求されれば一段flattenすれば済む consの数も同じだし好みでは ただvalがlistだと(a . (b c))=(a b c)とformatされてしまうので(a . ((b c))) = (a . (b c))と書いてる aとリストのペアなので意味的にも正しいはず http://mevius.5ch.net/test/read.cgi/tech/1531587928/293
294: 289 [sage] 2021/01/17(日) 12:38:34.26 ID:16Ro+9sx 最後は(a (b c))が正しい、.が余計だった なんかid変わってたけど289です http://mevius.5ch.net/test/read.cgi/tech/1531587928/294
295: 289 [sage] 2021/01/17(日) 12:54:42.47 ID:16Ro+9sx 真意を掴めてなかった感がある alist-pとplist-pを定義してる、よく見るし受け入れられてるイディオムだと思う deftypeしておくといい すると振り分けをdefmethodに任せる事が出来る http://mevius.5ch.net/test/read.cgi/tech/1531587928/295
296: デフォルトの名無しさん [sage] 2021/01/17(日) 22:27:16.25 ID:MtDeBO+C deftypeしたtypeはclassじゃないからdefmethodできない コンパイラマクロはプログラムの意味をかえたらいかんし パッチするなら別定義のファイルを追加でloadすれば上書きされるのでコンパイラマクロする意味0 嘘ノウハウいらないです・・・ http://mevius.5ch.net/test/read.cgi/tech/1531587928/296
297: デフォルトの名無しさん [sage] 2021/01/17(日) 23:38:13.35 ID:4VqziDiv >>296 そうだっけ、ごめん確認してきます http://mevius.5ch.net/test/read.cgi/tech/1531587928/297
298: デフォルトの名無しさん [sage] 2021/01/20(水) 01:48:17.88 ID:9Gv1v6nA 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 ) …に展開される http://www-formal.stanford.edu/jmc/recursive.html pdf17p evalのボトムケースでもある大事なassoc、俺にはplist版は思いつかない evenpが欲しいところだけど算術の定義がまだだし… clのcx^nrがn=4までなのもcaddarまで使ってるからだろうかね h
ttp://mevius.5ch.net/test/read.cgi/tech/1531587928/298
299: デフォルトの名無しさん [sage] 2021/01/20(水) 01:59:40.44 ID:9Gv1v6nA ffとかappqとか見慣れない面白関数出てきて面白かった first/restは単なるエイリアスでなくL-exp(線形リスプ?)における相似物としてちゃんと別に定義されてるとかも あとpairがpairlisに改称した理由とか気になってる、次は1.5マニュアル読むか 小並感 http://mevius.5ch.net/test/read.cgi/tech/1531587928/299
300: デフォルトの名無しさん [sage] 2021/01/22(金) 02:54:51.68 ID:GlnM3g/q 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とか定義しとくと便利ね http://mevius.5ch.net/test/read.cgi/tech/1531587928/300
301: デフォルトの名無しさん [sage] 2021/01/22(金) 08:32:42.17 ID:hEWi2BMh jmcはラムダ教徒だったろうになあ いくらlispが形式言語処理向けとはいえ、機械的に処理するには置換が面倒過ぎる http://mevius.5ch.net/test/read.cgi/tech/1531587928/301
302: デフォルトの名無しさん [sage] 2021/01/26(火) 22:54:00.78 ID:+x6NTk+g >>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を使う限りは循環定義だな http://mevius.5ch.net/test/read.cg
i/tech/1531587928/302
303: デフォルトの名無しさん [sage] 2021/01/26(火) 23:06:50.96 ID:+x6NTk+g 誤解してた M式apply[f; args]の引数はシンボルなのでS式のapplyに渡ってくるのはfunction fじゃなくてシンボルfか グローバルでdefunしたfなら多分呼べるはず、試してないけど http://mevius.5ch.net/test/read.cgi/tech/1531587928/303
304: デフォルトの名無しさん [sage] 2021/01/28(木) 03:52:37.47 ID:52TUUvk8 cons-car-cdr公理主義者への反発として最近妙に感心してしまったポエムを貼っとく https://arxiv.org/pdf/1507.05956 本当の基本関数はc、a、d、rでした paulのon lispに載ってる(explode 'bomb) → (B O M B)がハマりそうと思い、実装してみたは良いけどなんに使うんだコレ… 楽しいからいいか http://mevius.5ch.net/test/read.cgi/tech/1531587928/304
305: デフォルトの名無しさん [sage] 2021/02/06(土) 00:01:36.05 ID:7zAE1WPt 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も定義せねばならない 後はまかせた http://mevius.5ch.net/test/read.cgi/tech/1531587928/305
306: デフォルトの名無しさん [sage] 2021/02/12(金) 22:14:51.72 ID:rBgVuMm7 わたばさんのところ見て知ったけど 井田昌之先生のHPで bit 1996-4、5月号、Guy L. Steele Jr.『Scheme 過去◇現在◇未来』(訳 井田昌之) などの歴史資料PDFが読めるね http://mevius.5ch.net/test/read.cgi/tech/1531587928/306
307: はちみつ餃子 ◆8X2XSCHEME [sage] 2021/02/15(月) 14:15:58.52 ID:GNSRFiac Racket のメジャーリリース。 https://blog.racket-lang.org/2021/02/racket-v8-0.html ついに Chez Scheme の実行エンジンを組み込んだものがデフォになった。 http://mevius.5ch.net/test/read.cgi/tech/1531587928/307
308: デフォルトの名無しさん [sage] 2021/02/16(火) 17:43:38.86 ID:05vP8Ot3 普通のやつらを超えろおじさんのarcヲチするのにちょっとracketしてるけどフレンドリーかつ尖ってるね どんどん尖ってゆけ http://mevius.5ch.net/test/read.cgi/tech/1531587928/308
309: デフォルトの名無しさん [sage] 2021/02/16(火) 18:27:11.46 ID:6gVrqubW グラハムさんは今はBel言語では http://mevius.5ch.net/test/read.cgi/tech/1531587928/309
310: デフォルトの名無しさん [sage] 2021/02/16(火) 19:02:11.29 ID:05vP8Ot3 >>309 現在の俺がもしjmcだったら?とか言い出したので見限った 今ざっと目を通しても目新しいところ、興奮するところが全然ないんだなこれが https://sep.yimg.com/ty/cdn/paulgraham/bellanguage.txt ofは便利くらいの感想しか出ない あと整数nをnth nへオバロは、逆なんじゃないかな? push n へオバロならforthライクに発展できるのに おじさんは自分に求められてるのは変態テクニックやインスピレーションだと自覚しろ http://mevius.5ch.net/test/read.cgi/
tech/1531587928/310
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 545 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.014s