Lisp Scheme Part41 (855レス)
Lisp Scheme Part41 http://mevius.5ch.net/test/read.cgi/tech/1531587928/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
271: デフォルトの名無しさん [sage] 2020/12/10(木) 03:16:14.79 ID:FVBY7yTa clデフォでdynamic scopeじゃないな どういうcps実装なん http://mevius.5ch.net/test/read.cgi/tech/1531587928/271
272: デフォルトの名無しさん [sage] 2020/12/10(木) 19:52:56.52 ID:m5YUCflP dr.schemeを起動したらada lavelaceが表示された。12月10日が誕生日らしい。 http://mevius.5ch.net/test/read.cgi/tech/1531587928/272
273: デフォルトの名無しさん [sage] 2020/12/18(金) 00:23:57.39 ID:xE2tdWzM 3月にサスマンの新しい本が出ますね http://mevius.5ch.net/test/read.cgi/tech/1531587928/273
274: デフォルトの名無しさん [sage] 2020/12/18(金) 00:35:54.39 ID:wHl77nxB Software Design for Flexibility How to Avoid Programming Yourself into a Corner https://mitpress.mit.edu/books/software-design-flexibility http://mevius.5ch.net/test/read.cgi/tech/1531587928/274
275: ◆QZaw55cn4c [sage] 2021/01/02(土) 01:05:03.40 ID:wp0Bo1A/ >>6 この冬、職場から休暇をいただいたことをきっかけに a little schemer への再チャレンジを始めました 2週間では >>6 までは進めなかったけれども、しつこくてべたな精読を今後も継続することにしました‥‥個人的な話でごめんなさい http://mevius.5ch.net/test/read.cgi/tech/1531587928/275
276: デフォルトの名無しさん [sage] 2021/01/02(土) 09:30:41.51 ID:DXffwUjS 頑張れ http://mevius.5ch.net/test/read.cgi/tech/1531587928/276
277: はちみつ餃子 ◆8X2XSCHEME [sage] 2021/01/02(土) 12:55:01.66 ID:rf+zWHQf 2018 年の話題へスレ内でアンカーできるあたり、だいぶん進みの遅いスレだなぁ…… ところで先月、 Gauche の 0.9.10 がリリースされたよ。 http://mevius.5ch.net/test/read.cgi/tech/1531587928/277
278: デフォルトの名無しさん [sage] 2021/01/11(月) 12:28:40.23 ID:evx8yw3j 最近Clojureをさわって思ったんだけど、コンスって必要?ただのリストじゃだめなん? http://mevius.5ch.net/test/read.cgi/tech/1531587928/278
279: デフォルトの名無しさん [sage] 2021/01/11(月) 22:00:08.80 ID:TgqHKx3G 最近はlistと言いつつ狭義のlist(linked)じゃなくlinked arrayな事が多いけどclosureもそれかな?(触ってないごめん (三十年前の言語だけど)Pythonのコード読んだけどそうだったはず 計算量の議論なんかだとlinked listとarrayは一長一短ってことになってるが、アーキテクチャと殆どのデータの性質によって連結配列が実質万能なんで仕方ないね 抽象データ型としてcons/car/cdrというインターフェイスを提供してるなら十分lispだよ consがなんでそんな大事なのかというと、普通に使われる抽象データ型の中では最も表現力が高いこと 単に自由に伸ばせるリストのようなモノでは、構文上バイナリツリーより複雑な構造は書きにくい(ポインタを駆使しない限り) consが提供されていれば自然に平面DAGが、そしてちょっと読みにくくなる程度で任意のグラフが表現できる 化学構造やグラフをconsで扱ってるけどほんと便利だよ http://mevius.5ch.net/test/read.cgi/tech/1531587928/279
280: デフォルトの名無しさん [sage] 2021/01/11(月) 23:51:15.24 ID:TgqHKx3G 書きにくい/やすい、ってのは環や分岐がcarとcdrとconsだけで書けるって意味ね これらのアクセサが提供されていない言語、例えはPythonやcではリストのインデックスに対応する参照/ポインタを明示的に取り出して記録し、アドレスを格納する必要がある またアルゴリズムにかける時に素の型とポインタ型を区別して場合分けする必要まである そのまま文字列として吐くのも実装しなくていいし(リンク先のインデックス表示が読みやすいとは言わないが) PythonなんかだとオブジェクトがリッチなのでnetworkXのような巨大なライブラリを使えば木を超えた表現も自然にかけるので、一時浮気をしたが… 形式言語の分野だともう線形な文字列や二分木の括弧文法は研究され尽くしてるので、グラフ文法なんかが最近流行ってlisp系言語で論文書かれてるね http://mevius.5ch.net/test/read.cgi/tech/1531587928/280
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まで使ってるからだろうかね http://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
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 555 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.012s