Lisp Scheme Part41 (809レス)
Lisp Scheme Part41 http://mevius.5ch.net/test/read.cgi/tech/1531587928/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
リロード規制
です。10分ほどで解除するので、
他のブラウザ
へ避難してください。
156: デフォルトの名無しさん [sage] 2020/03/03(火) 18:09:46.41 ID:wrUSgHR4 >>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の世界に対応していると言えるわけですよ http://mevius.5ch.net/test/read.cgi/tech/1531587928/156
173: デフォルトの名無しさん [sage] 2020/03/05(木) 20:47:20.68 ID:h922Dn8C >>156 Lispはメタプログラミングしやすいって理屈は分かるが 実際にそれでものすごい作業効率が上がるかは疑問だな? なぜんあらメジャーな言語はライブラリが充実してて それ使えば最初から書かなくても済むわけだから早い http://mevius.5ch.net/test/read.cgi/tech/1531587928/173
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.025s