これは、独自の Lisp like 言語の実装を容易にするための空(Kara-)Lispライブラリです。
Kara-Lisp は言語の基礎機能のみを提供します。それ以外は全て拡張の形で実装します。
- lisp ソースコードは UTF-8、UTF-16、UTF-32 で書かれているものとします。
- 内部で文字列は UTF-32 で扱われます。
- 文字列内では、
"\t"
、"\r"
、"\n"
のエスケープシーケンスが使えます。それ以外はそのまま出力されます( '\c' -> 'c'とか)。 - およそ、整数に見える表記は 32bit signed int として扱われます。
- 浮動小数点数に見える表記は 64bit double (D言語の double 準拠)として扱われます。
- それ以外は全て変数名と見なされます。日本語も変数名として使えます。
拡張は、sworks.klisp.lisp.Func.Body 型の関数を定義するか、sworks.klisp.lisp.FuncBase クラスを 継承したクラスを定義することで行います。 詳細は sworks.klisp.lisp.d 及び、sworks.klisp.core_kl.d を参照して下さい。
YaneLisp の仕様への準拠を目指しています。 一応、unittest は通るものの、若干の仕様の違いが確認されています。
- func 関数で定義する関数の引数は @0 〜 @9 までしか使えません。 @params に全引数のリストが格納されるので、@10 以降はこちらを使って下さい。
-
2013/01/20 ver. 0.004
- CTFE で、もうちょっと畳み込むように。
- Inline Mode を追加。D言語を拡張するように使うことができる。
-
2013/01/13 ver. 0.003
- なんちゃって CTFE。
-
2012/11/28 ver. 0.002
- 全面書き直し。github デビュー。YaneLispなんちゃって準拠
-
2011/08/30 ver. 0.001
- first release