Lisp Scheme Part41 (858レス)
上下前次1-新
抽出解除 レス栞
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
152(1): デフォルトの名無しさん [sage] 2020/02/22(土) 21:37:13.68 ID:dEZr6bBq(3/3) AAS
思うんだけどLispというと悟りとか、ゲーデル云々みたいな話がよく言われるけど
Prologではあんまり関連付けて言われないですよね
173: デフォルトの名無しさん [sage] 2020/03/05(木) 20:47:20.68 ID:h922Dn8C(10/11) AAS
>>156156(1): デフォルトの名無しさん [sage] 2020/03/03(火) 18:09:46.41 ID:wrUSgHR4(1) AAS
>>152
> Prologではあんまり関連付けて言われないですよね
Prologは「論理プログラミング言語」と呼ばれたりするけれど書かれたプログラムを実行可能にするためのプログラミング言語であるために
論理のための言語(つまり論理式を記述するための言語)とはかなり違ってしまっているからね
その典型がPrologで動くプログラムを書く上で不可欠なカット “!” ね
あれは本来の論理には対応物がなく論理とは全く縁のないコンストラクトだが
カットを使わなければほとんどのPrologプログラムはまともに動かなくなってしまうだろう
その点、Schemeから命令的な言語コンストラクトおよび標準手続きであるset!とset-car!, set-cdr!を除いた部分は
弱い(weak, つまりλ抽象の本体式中のβ-簡約基(redex)は簡約せずに放置しておく)
作用的順序(applicative order)の評価戦略(reduction strategy)のλ計算そのものだ
call-ccは継続(continuation)というメタな(つまり意味論上の)値を対象レベルに持ち込むmeta-circular的な拡張であり
Schemeに限らずLisp一般で広く採用されているS-式という構文は自分の構文に対する抽象構文の表現になっているから
プログラムが自分自身(や同じ言語で書かれた他のプログラム)のソースコードを記述している言語を対象言語として
自分自身がそれを素直な形で操作できるメタ言語レベルの存在として振る舞えることになるからね
言い換えればS-式という表現形式のために括弧をやたらと多用させられるLisp言語では
ソースコードをその抽象構文(木構造)と同型な形で記述させていると言っても良い
だからLispのプログラムをLispで処理する場合には、C等のような普通のプログラミング言語で書かれたプログラムを処理する場合には
不可欠な字句解析や構文解析が実質上は不要なんだよ
何故ならば処理する側のLispプログラムにとって処理される側のLispコードは最初から抽象構文木と1:1対応する形式で提供される訳だから
正にゲーデルの不完全性定理で行っている形式化された論理のゲーデル数による表現とそれを原始再帰的函数や同述語を含むメタ論理のレベルで
処理する構造が、Lispの世界に対応していると言えるわけですよ
Lispはメタプログラミングしやすいって理屈は分かるが
実際にそれでものすごい作業効率が上がるかは疑問だな?
なぜんあらメジャーな言語はライブラリが充実してて
それ使えば最初から書かなくても済むわけだから早い
243(1): ◆QZaw55cn4c [sage] 2020/11/04(水) 19:46:38.68 ID:P7pHA7N2(1) AAS
>>242242(1): はちみつ餃子 ◆8X2XSCHEME [sage] 2020/11/04(水) 12:06:16.91 ID:gK1y19nz(1) AAS
なんだかんだで C だけは手放せない感じはあるかな。
低レイヤを支配してるのはやっぱ C だわ。
それもこれからは一部は Go や Rust に置き換わっていくとは思うけど。
>これからは一部は Go や Rust に置き換わっていくとは思うけど。
……
C で記述された lib を Go や Rust は気軽にコールできるのですか?
まさか…
300: デフォルトの名無しさん [sage] 2021/01/22(金) 02:54:51.68 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とか定義しとくと便利ね
424: デフォルトの名無しさん [sage] 2021/07/15(木) 16:15:28.68 ID:MIyHkZEB(3/3) AAS
>>412sbclが内部でnlet使ってるね
::で参照したりコピペしたりしてるわ
やっぱclに入れた方が良かったな
593: デフォルトの名無しさん [sage] 2023/01/31(火) 13:07:01.68 ID:tSjB9eWW(5/7) AAS
>>592592(1): デフォルトの名無しさん [sage] 2023/01/31(火) 12:38:01.83 ID:mFP57axK(1) AAS
ローカルにダイナミックな束縛をやるなら、それ専用のprogvフォーム(clにある)はどう思われてるんだろ?
(progv 変数リスト
値リスト
body)
let系列の (変数 値)リスト慣習を転置(zip)した記法だけど、束縛が多くても縦にスペースを取らない
let慣習では変数 値はsetq/set!だけど、progvの変数リストは評価されるから、リード時にバッククオートでシンボルを埋め込むようなハックが不要
動的束縛を活用するようなメタな場面では特にだけど、埋め込む為だけにわざわざリーダを何度も通すのが歯痒い
多分に個人的な好みだと思うけど
転置されてるのと束縛リストの実行時評価は、おそらくlet風のマクロを書く時に便利だからかな
mapcar #'list let-like-binding-list
がprogvに渡せて、あと欠損値も勝手にnilで埋まる
あと機械的に名前を処理するならgensymもお忘れなく
611: デフォルトの名無しさん [sage] 2023/08/18(金) 02:03:46.68 ID:dtVdNVwB(1) AAS
John Cowan 氏が R7RS-large の議長の座を降りることを表明した模様。
これからの体制については現時点は決まっていない。
723(1): デフォルトの名無しさん [sage] 2024/08/31(土) 07:41:36.68 ID:jZQQMHu4(1) AAS
おはようございます
貴重でもないし
趣味でもないし
仲間でもないし
仲良くすることもありません
727: デフォルトの名無しさん [sage] 2025/04/08(火) 17:02:32.68 ID:dn4YaJk8(1) AAS
>>723
じゃあお前は来なくていいよ
一人でチラシ裏に書いててくれ
756: デフォルトの名無しさん [sage] 2025/07/09(水) 15:42:40.68 ID:QwaFNVYh(4/8) AAS
更に、スペシャルフォームはifの様にコンパイラーが特殊なコンパイルをする必要があるので、普通の関数と区別する必要がある点も重要だ
802: デフォルトの名無しさん [] 2025/07/15(火) 07:32:47.68 ID:M3dXRA34(2/2) AAS
ある状況に最適化するのだから当然だが, 最適化は特定の実行モデルと結び付けると局所的には成功するが往々にして大域的には失敗する
言語設計の巧みさは最適化可能な余地を保ちつつ特定の実行モデルは極力前提にしないところにある. 特定の実行モデルの戦略の失敗が言語の失敗に直結してしまう
これも, はちみつが既に指摘している. 仕様の読み方を学んではどうか. まして独自の言語設計をするならば
829: 八大龍王・豊田聡志 [] 2025/09/30(火) 20:03:06.68 ID:rqdKtsao(17/24) AAS
の霊界ガールズ・ガーデンで体力尽きて死ねクソかつえ。 そして切り札を失え、クソ下村敬治。。
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.058s