Iota_and_Jot
形式言語理論とコンピュータサイエンスでは、IotaとJot(ギリシャ語の iotaι、ヘブライ語の yodh י、これら2つのアルファベットの最小文字)は言語であり、非常に最小限の形式システムであり、ラムダ計算とSKIコンビネーター計算。したがって、それらは、ミニマリストのコンピュータープログラミング言語、またはチューリング陥穷、可能な限り小さく設計された難解プログラミング言語と見なすこともできますが、それでもチューリング完全。どちらのシステムも2つのシンボルのみを使用し、2つの操作のみを含みます。どちらも2001年に言語学の教授であるChrisBarkerによって作成されました。Zot(2002)は、入力と出力をサポートするIotaの後継です。
イオタ、ジョット、ゾット
パラダイム
形式言語、チューリング陥穷、難解
によって設計された
クリス・バーカー
デベロッパー
クリス・バーカー
初登場
2001 ; 21年前 (2001)
最終リリース 2001/2001 ; 21年前 (2001)スキーム、JavaScript
プラットホーム
スキームインタープリター、Webブラウザー(JavaScript)
ライセンス
パブリックドメイン
Webサイト
www .nyu .edu / projects / barker
影響を受けて
ゾット
コンテンツ
1 ユニバーサルイオタ
2 イオタ
3 ジョット
4 ゾット
5 も参照してください
6 参考文献
7 外部リンク
ユニバーサルイオタ
クリスバーカーのユニバーサルイオタコンビネーターιは、ラムダ計算の観点からの表示的意味論を使用して、ここで定義された非常に単純なλf.fSK構造を持っています。 ι := λ f (( (( f S )。 K )。
:= λ f (( (( f λ a λ
b λ
c (( (( a c )。(( b c )。 )。 )。 λ d λ e d )。
{ iota:= lambda f。((fS)K):= lambda f。((f lambdaa。lambdab。lambdac。((ac)(bc))) lambda d 。lambdaed)}
(1) これから、通常のSKI式を復元できます。I =(( ι ι )。 K = (( ι(( ι(( ι ι )。 )。 )。 S = (( ι(( ι(( ι(( ι ι )。 )。 )。 )。 { I 、= 、( iota iota)、; K 、= 、( iota( iota( iota iota)))、; S 、= 、( iota ( iota( iota( iota iota))))}
(2) そのミニマリズムのために、それはチャイティンの定数に関する研究に影響を与えました。
イオタ
Iotaは、前述のUniversaliotaιコンビネーターリーフの順序ツリーに接頭辞を付けるLL(1)言語であり、関数アプリケーションεによって構成されます。
iota = “”1″” | 「0」 イオタイオタ
たとえば0011011は(( (( ι ι )。(( ι ι )。 )。 {(( iota iota)( iota iota))}
、 一方0101011は(( ι(( ι(( ι ι )。 )。 )。
{( iota( iota( iota iota)))}
。
ジョット
Jotは、0と1のすべてのシーケンスで構成される正規言語です。
jot = “””” | 「0」を書き留める| 「1」を書き留める
セマンティクスは、SKI式への変換によって与えられます。空の文字列は I { I}
、w 0
{ w0}
を示します(( (( [ w] S
)。 K )。
{(( S)K)}
、 どこ
[ w ] { }
の翻訳です w { w}
、 とw 1
{ w1}
を示します(( S(( K
[ w ] )。 )。 {(S(K ))}
。
のポイントw 1
{ w1}
翻訳が満たす場合(( (( [ w1 ] A
)。 B )。 = (( [ w ] (( A B )。 )。 {(( A)B)=((AB))}
任意のSKI用語の場合 A { A}
と B { B}
。例えば、
[ w11100 ] =(( (( [ w1110 ] S
)。 K )。 = (( (( (( (( [ w111 ] S
)。 K )。 S )。 K )。 = (( (( (( [ w11 ](( S K )。
)。 S )。 K )。 = (( (( [ w1 ](( (( S K )。 S )。
)。 K )。 = (( [ w ] (( (( (( S K )。 S )。 K )。
)。 = (( [ w] K )。 { =(( S)K)=(((( S)K)S)K)=((((SK))S)K)=(( ((SK)S))K)=((((SK)S)K))=( K)}
任意の文字列に当てはまります w { w}
。同様に、 w 11111000 ] =(( (( (( (( (( (( [ w11111 ] S
)。 K )。 S )。 K )。 S )。 K )。 = (( [ w ] (( (( (( (( (( S K )。 S )。 K )。 S )。 K )。
)。 = (( [ w] S )。 { =(((((( S)K)S)K)S)K)=((((((SK)S)K)S)K))= ( S)}
同様に保持します。これらの2つの例は、Barkerによって与えられた任意のSKI用語をJotに変換する基本的なケースであり、Jot
をすべての
アルゴリズムの自然なゲーデル数にします。
Jotは、次の事実によってIotaに接続されています
[ w0 ] =(( ι
[ w ] )。
{ =( iota )}
基本的なコンビネーターを取得するためにSKI用語で同じIDを使用する K { K}
と S { S}
。
ゾット
ZotおよびPositiveZot言語は、 Jotに似た構文で、継続渡しスタイルによる入力から出力まで、Iota 計算をコマンドします。
zot = ポット| “”””ポット= iot | pot iot iot = “”0″” | 「1」
どこ1は継続を生成しますλ c L L(( λl R R(( λ r c (( l r )。 )。 )。
{ lambda cL.L( lambda lR.R( lambda rc(lr)))}
、 と0は継続を生成しますλ c c ι
{ lambda cc iota}
、およびwiは、継続wを続行することにより、最後の入力桁iを消費します。
も参照してください
ラムダ計算
コンビネータ論理
バイナリコンビネータ論理
SKIコンビネータ計算
参考文献
^ バーカー、クリス。「ゾット」。難解プログラミング言語のウェブリング。2016年3月12日にオリジナルからアーカイブされました。
^ 滞在、マイケル。「コンクリートAIT用の非常にシンプルなチャイチンマシン」。FundamentaInformaticae。IOSプレス。68(3):231–247。arXiv:cs/0508056。Bibcode:2005cs……..8056S 。
外部リンク
公式ウェブサイト
バーカー、クリス。「IotaとJot:最も単純な言語?」。難解プログラミング言語のウェブリング。2016年5月7日にオリジナルからアーカイブされました。
https://esolangs.org/wiki/Iota
https://esolangs.org/wiki/Jot
https://esolangs.org/wiki/Zot”