2019年6月2日日曜日

Kaleidox

前回SimpleModeling構想の中核のプロダクトとして開発中のアクション言語(Action Language)であるkaledidoxを紹介しました。

今回はこのkaleidoxのざっくりとした概要について説明します。

特徴

Kaleidoxは以下のプログラミング言語からヒントを得ています。

  • Lisp + Shell Script + Forth + COBOL

ベースとなるのはLispで、基本的にはLispインタープリターがプログラムを解釈実行する構造になっています。

Shell Scriptは、アクション言語として簡単なパイプライン構造でデータ操作を中心としたプログラミングが可能となるように、Shell Script的な文法をLispに対するシンタクスシュガーとして実現しています。

Forthは古のスタック指向言語ですがShell Script的文法と組み合わせてパイプライン・プログラミングを実現するために、Forth的なスタック操作の機能を提供しています。

COBOLは(1)レコード指向、(2)Divisionによる区画を参考にしています。

ソースコード

KaleidoxはGitHubで開発しています。

インストール

Kaleidoxは開発の初期であることもあり簡単にインストール可能なリリース版は用意していません。

興味のある方はソースコードからビルドしてみてください。

以下の手順でビルドすることができます。

$ sbt universal:packageBin

targetuniversalkaleidox-0.1.2.zip というファイルが作成されるのでこれを展開してインストールします。

sbtの機能を使って、debian, rpm, docker, graalvmのインストールパッケージを作成することも可能です。

Hello World

まずkaleidoxの簡単な使い方としてREPLによる実行をしてみます。

コンソールから引数なしでkaleidoxを起動するとREPLのプロンプトが表示されます。

$ kaleidox
kaleidox> 

kaleidoxはLispなので式を評価することでプログラムを実行します。

最も簡単な式はリテラルです。最も重要なリテラルである文字列を入力してみます。

kaleidox> "Hello World"
Hello World

評価の結果、文字列がそのまま返ってきます。

簡単な計算

次は関数の評価です。+関数で足し算を行ってみます。

kaleidox> (+ 1 2)
3

上記は普通のLispの関数評価ですが、kaleidoxの文法では以下のように括弧を外す表記ができるようになっています。

kaleidox> + 1 2
3

この例だけでは分かりづらいかもしれませんが、この文法によりShell Script的にプログラムを書くことができるようになっています。

まとめ

今回はかkaleidoxのざっくりした概要とインストール、Hello Worldまで紹介しました。

次回はJson, XML周りの扱いについて紹介する予定です。

諸元

  • Kaleidox : 0.1.2