デカルト言語のプログラム例
デカルト言語のHTTPクライアント機能とHTMLの加工機能により、任意のインターネット上の情報を取得して加工することが出来ます。
なお、ダウンロードには、実行例のパッケージとして次のものを用意しました。Windows上で動作するプログラムです。
説明については、クライアント機能だけではなく、WWWサーバ上のWWWアプリとするための説明も行います。
(更新中)
「紫」は、日本語でプログラムの書ける新しい言語です。
作成されたプログラムは、「紫」により、一階述語論理の関係に分解されてコンパイルされ実行されます。
クロージャをサポートした新言語のコンパイラをデカルト言語で作成します。
コンパイルした結果は、中間コードに出力しデカルト言語で書かれたVM(バーチャル・マシン)で実行することとします。
基本的な手続き的な処理については、懐かしいBasicの文法を使い、関数・サブルーチンの呼び出し処理と変数のスコープの管理をクロージャ対応としましょう。
また、関数クロージャは、ファーストクラス・オブジェクトとして扱かいます。
(更新中)
デカルト言語で作成したプログラムを独立したWindowsやLinuxのアプリケーションとして実行するための方法について説明しましょう。
(更新中)
日本語での会話を楽しめる『会話キャラクター』プログラムです。猫耳メイドやツンデレ・キャラクターのようなイメージの会話をします。
人工知能のようで、人工無能のような、デカルト言語で作られた日本語で会話できるキャラクターについて説明しましょう。
デカルト言語を使って、Lispインタプリターを作成しましょう。
できるだけシンプルなLispにします。しかし、それだけではあまりに芸がないので、ちょっとだけひと捻りしてみましょう。
デカルト言語には強力な構文解析機能があるので、それを使って、普通のLispのs式に加えて、lamda関数をλ式として受け付けるように構文を拡張します。
lambda関数を以下のように書けるLispです。
λx (car x) '(a b c)
λxyz (* x (+ y z)) 9 8 7
λx λy λz (+ x (* y z)) 7 40 3
(define f λx (* x 2))
(define (f x) (* x 2))
(define f (λ(x) (* x 2)))
(Lispをつくろう(その2)を更新中)
デカルト言語にも選択と決断のような動作を行わせるために、順列と組み合わせの機能を付けることにしました。
限られた実行時間の中でも、多くの可能性を検討し、より優れた結果を選択できるようにします。
デカルト言語を使ってパズルをどのように解いていくかを説明します。
例題としては、広くよく知られているものを集めました。他のプログラム言語で実装されているプログラミング方法と比べてみてください。
仕様を簡略化した、Tiny Pythonを作成します。
Tiny Rubyと同様に思い切り簡略化した仕様とします。
なお、Tiny Rubyでの記述とオーバーラップする部分もありますが、ここのTiny Pythonについての記述は、こちらを単独で読んでも分かるように記述していきましょう。
Tiny Rubyの記述を既にお読みの方は、共通部分や相違部分について考えながら読んでいくと面白いと思います。
デカルト言語で日本語の形態素解析を実行するプログラムを作ります。
日本語の文章の解析を行うことによって、デカルト言語のプログラムで自然言語の処理を行うプリプロセッサとして役立てることを目指しましょう。
デカルト言語では、マルチコア対応機能をサポートします
マルチコアシステム上での効率の良い並列コンピューティングが可能となりました。マルチコアのシステム上では、N個のコアがあれば、N倍以上の速度のプログラムを書くこともできてしまいます。
デカルト言語で、自然言語で論理的な処理を行います。
A.Iとしては極めて初歩的なものですが、発展させていけば未来には実用になるかも?しれません。
デカルト言語を使って、プログラム言語のコンパイラを作成しましょう。
Rubyの仕様を簡略化したTiny Rubyコンパイラです。
デカルト言語の構文解析機能(EBNF)を使用するとコンパイラも簡単に作成できてしまいます。
人工知能風のプログラムをご紹介しましょう。
昔からある有名な問題です。
デカルト言語の機能を一通り説明しています。
デカルト言語を使ってリストの操作をする基本的なプログラムを作成します。
デカルト言語の(yacc/lexみたいな)構文解析機能を使って、簡単な電卓プログラムを作成します。
デカルト言語で動的にオブジェクトを生成して、動的にメソッドや変数を操作します。
デカルト言語の操作方法、文法、組み込み述語のリファレンス・マニュアル、および便利な使い方について記述します。
---