関数型言語 Grass
まともに読んでいないのでリンクだけです。
ちょっと草植えときますね型言語 Grass
関数型のトンデモ(?)言語としては既にUnlambdaが不動の地位を築いていたりするのですが、ネタ言語としてはこれもそれなりにアリかもしれません。理論的側面、関数型言語としての美しさから言えばやっぱりUnlambdaには大きく劣る感じがしてしまいますが…。
ところで、UnlambdaもGrassも(あとWhite Spaceも)文字は3種類です。もっと減らすことはできないだろうかと思ってみると、3種類の文字を2種類の文字2文字でエンコードすることができるので「一応」2種類まで減らせますね。
しかし、Unlambdaの場合は意味があるので言語の目的からして3つより減らすデメリットが大きいし、Grassはvを除いてしまったときに雑草としての見栄えが悪くなってしまう(解釈されない文字にvを混ぜてもいいですが)。またWhite Spaceも言語の目的からして代表的な空白文字の「Space, Tab, LF」のいずれも削れないわけです。
いずれの言語も独自の美学に従っているに違いないと思ったわけです(どんなまとめかただ
ちょっと草植えときますね型言語 Grass
関数型のトンデモ(?)言語としては既にUnlambdaが不動の地位を築いていたりするのですが、ネタ言語としてはこれもそれなりにアリかもしれません。理論的側面、関数型言語としての美しさから言えばやっぱりUnlambdaには大きく劣る感じがしてしまいますが…。
ところで、UnlambdaもGrassも(あとWhite Spaceも)文字は3種類です。もっと減らすことはできないだろうかと思ってみると、3種類の文字を2種類の文字2文字でエンコードすることができるので「一応」2種類まで減らせますね。
しかし、Unlambdaの場合は意味があるので言語の目的からして3つより減らすデメリットが大きいし、Grassはvを除いてしまったときに雑草としての見栄えが悪くなってしまう(解釈されない文字にvを混ぜてもいいですが)。またWhite Spaceも言語の目的からして代表的な空白文字の「Space, Tab, LF」のいずれも削れないわけです。
いずれの言語も独自の美学に従っているに違いないと思ったわけです(どんなまとめかただ
トラックバック(0)
このブログ記事を参照しているブログ一覧: 関数型言語 Grass
このブログ記事に対するトラックバックURL: http://pascal.iobb.net/diary/mt-tb.cgi/35

原理的には文字列→整数iにエンコード→1種類の文字をi個並べる、とかすれば一応1種類に(マテ
文字列全体をエンコードするって発想がすっかり抜け落ちてたぜ…。恥ずかしい><
Refererを辿ってきました.Grassの作者です.
Grassのページからリンクを張っていますが(…ってリンク切れてますね.Internet Archiveには残っています),Iotaという関数型言語が2つの文字(唯一のコンビネータiとその適用演算子*)と2つの構文規則のみでチューリング完全を達成しています.文字列のエンコードのような,ある意味「姑息」な手段を使うことなく文字数を減らしているのは興味深いところです.
なお,IotaのWebサイトでも言及されていますが,任意の構造をエンコードできる曖昧でない言語は1種類の文字では構成できないため,実用的な言語にするためには最低2種類の文字が必要です.まあ,実際には実用性もへったくれもありませんが(笑
すみません,投稿してからウソを書いていることに気がつきました.↑の訂正です.
「任意の構造をエンコードできる曖昧でない言語は1種類の文字では構成できない」は「iotaの構文を〜」の誤りで,従って最後のパラグラフはまったくのデタラメです.申し訳ありません.
xhlさんのコメントの通りのことをすれば1種類の文字で任意の構造を表現できますね.このiには「ゲーデル数」という名前がついています.プログラムをゲーデル数に変換する手法はこの方法も含めていくつかあり,例えばIotaと共に紹介されているプログラミング言語Jotもそのひとつとみなせます.