Lisp Scheme Part41 (856レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
585: デフォルトの名無しさん [sage] 2023/01/31(火) 10:34:59.12 ID:tSjB9eWW(1/7) AAS
グローバル&ダイナミックは罠になり得るけど、対話的に使うコマンド言語(シェル)は大体そうだし利便性の問題、新しいpwshでももそう
定義をテキストとして全てダンプして、読み戻せる利点がある

cl/scheme(fluid-letとかそんな名前の拡張)のように基本レキシカルで、ローカル&ダイナミックは宣言が必要なら意図せず使う事は稀なはず
(form-in-scope? (declare (special x)) form-in-scope)
(locally (declare (special x)) (form-in-scope))
面倒だけど(declare…)が外、つまり同じレベルのフォームに影響する場合があるのが気持ち悪いから、明示的な後者を好む
586: デフォルトの名無しさん [sage] 2023/01/31(火) 10:56:14.75 ID:tSjB9eWW(2/7) AAS
レキシカルな情報を取り込んでしまう(暗黙にクロージャを作る)クロージャにはテキスト表現が無いから、ダンプが出来ないのは致命的な欠点
よってダイナミックスコープ一択になる
pwshだと gci function:
bashだとdeclare -f (多分、よく知らん)
でダンプ、出力されるテキストを読み直せば(大体)環境が復元できる

pwsh方式だと{code}.GetNewClosure()でクロージャは明示的に得る
587
(1): デフォルトの名無しさん [sage] 2023/01/31(火) 11:08:10.67 ID:tSjB9eWW(3/7) AAS
>>581
guileだっけ?
あれ変な拡張山盛りだから出来るんじゃない?fluid-letみたいな名前がないかaproposしてみたら
590
(1): デフォルトの名無しさん [sage] 2023/01/31(火) 11:33:22.79 ID:tSjB9eWW(4/7) AAS
>>588
ええ…gnu公式の拡張言語とは一体なんだったのか
593: デフォルトの名無しさん [sage] 2023/01/31(火) 13:07:01.68 ID:tSjB9eWW(5/7) AAS
>>592
転置されてるのと束縛リストの実行時評価は、おそらくlet風のマクロを書く時に便利だからかな
mapcar #'list let-like-binding-list
がprogvに渡せて、あと欠損値も勝手にnilで埋まる

あと機械的に名前を処理するならgensymもお忘れなく
594: デフォルトの名無しさん [sage] 2023/01/31(火) 13:18:26.31 ID:tSjB9eWW(6/7) AAS
例が悪かった
単にlistをmapcarするだけでは、let形式のリストをそのまま渡した方が早い
不定数の引数を取ってリストを返す関数で、自明なlist以外をmapcarするならかなり楽が出来るはず

しかし何に便利か今すぐ具体的な例は思い付かない()
595: デフォルトの名無しさん [sage] 2023/01/31(火) 14:00:30.21 ID:tSjB9eWW(7/7) AAS
>>591
俺環ではインストール(展開後)で50MBのディスク容量占めてるな
実験的なelisp対応(編集機能無しで一体何の意味が?)とか
興味深いけど謎な方向に突き進んでるね
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.033s