同図像性(homoiconic)言語 FACTORとその仲間たち

twcritique
LispのコードはLispのデータでもある。同図像性(homoiconic)言語とは何かを知りお近づきになる

LispのコードはLispのデータでもある

Lispは同図像性を持つ(homoiconic)言語だ。すなわち、LispのコードはLispのデータでもある。これによって、「プログラムを生成するプログラム」というのが簡単に書けるようになる。

そこでFACTOR

Factor は連鎖性プログラミング言語で、動的に型付けされた値への参照が、スタックを介してワード (関数) 間でやり取りされます。wiki には、たくさんのサンプルプログラムが用意されています。

Factorはいわゆるスタック指向型のプログラミング言語です。Factorの開発元は concatenative programming という言葉を好んで使っているようですが、この言葉はあまりメジャーではない気がします。

Factorに乗り換えるプログラマーは、Factorのより高位なプログラミング力を手に入れるために、ローカル変数を放棄しなくてはなりません。

Factor は動的型付けであり、そこにユニークなオブジェクトシステムが伴っている。Factor のプリミティブ型は数少なく、ユーザーや標準ライブラリではタプルなどの機構を使って独自のクラスを作成できる
Factor – Wikipedia

Lispは同図像性を持つ(homoiconic)言語だ。すなわち、LispのコードはLispのデータでもある。これによって、「プログラムを生成するプログラム」というのが簡単に書けるようになる。
Lispの力の源泉 – 同図像性 – slow living in the sky

FACTORもです

Factorでは 1 2 + とか書いたら1+2 が実行されます。1と2がスタックに積まれて可算が実行されるわけです。スタック特有の操作として最低限、スタックトップを捨てる drop, スタックトップをコピーする dup, スタックトップとその1つ下を入れ替える swap あたりを知っておくと便利です
リリカル☆Lisp開発日記 » Blog Archive » [LSP42] Factor

フィボナッチ数

: fib
dup 3 < [ drop 1 ] [ dup 1 - fib swap 2 - fib + ] if ; 10 fib . ! 55 が返る。 Factor クエックブック

http://ancient.s6.xrea.com/factor/cookbook.html

その他の仲間たち

PietはDavid Morgan-Marが考案したスタック指向プログラミング言語で、ソースコードがドット絵で表現されることが特徴です。
PietでLISP処理系を書くのは難しい – YAPC::Asia Tokyo 2015

Mopsは高水準のOOP構成に服する優れたForth風言語ということができます。OOPの上着を着たForthと言うこともできるかも知れません(が、そういうべきではないでしょう)。コードは、他の全てのForthベースの言語と同様、三つの主要な特徴で性格付けられます。:顕在的なスタック、演算子後置(Postfix)記法、そして、言語の拡張性です。
Ed WilliamsのMops概説

プログラムコードを、その言語の基本データ型で表現できる言語は、「同図像性」があるという。

なぜJuliaを調べるのか • Homoiconicな(同図像性という訳語があるらしい、同表象性ではどう?) – プログラムの表現がデータと同じ – Lisp,Prolog,Curl,Julia

同図像性があるとマクロが使えて便利。というか、マクロを書くのに慣れ親しんだ配列のメソッドを使えて便利。

黒魔術っぽくも見えるが、『達人プログラマー』にも、擬似コードから実際のコードを生成するテクニックが載っていたし、黒魔術ではない。島は移動しない。

view layout [u: field “user@example.com” h: field “http://” btn “Send” [send to-email u/text read to-url h/text alert “Sent”]]

言語リファレンスによれば、C言語, Pascal, Ada, ModulaなどといったAlgol系に似た自然な構文を持ちながらも、Lisp由来の同図像性を持つ言語の力を備えるよう設計された言語だそう。

同図像性を持つ
Wolfram言語では,その記号的特性により,基本的に「コード=データ」です.

https://matome.naver.jp/odai/2146212299024871201
2020年03月14日