FrontPage
New
Tools
Index
TempPage
Edit: TtCppLisp
!!! DOWNLOAD || 実行ファイルとソース | <<{ttcpplisp_070912.zip} !!! 掲示板 適当になんでも。 ((comment 0)) !!! 概要 TtCppLisp は C++ で記述され実装された Windows 上で動作する Lisp 処理系です。 系統としては Common Lisp 系の実装となっており、 web で良くある scheme 系の実装ではないです。 コンパイル形式ではなくインタプリタとなっています。 C++ を選択した理由は C++ の勉強の為です。 当初は主に以下の機能の勉強を目的としていました。 * 参照 * テンプレート * STL(を含めた標準ライブラリ) パフォーマンスは良くないです。というか考えて作ってないです。 たらいまわし関数で比較して、以下を実行した場合 8< (defun tak (x y z) (if (>= y x) y (tak (tak (- x 1) y z) (tak (- y 1) z x) (tak (- z 1) x y)))) (tak 10 5 0) >8 xyzzy => 1 秒ぐらい TtLisp => 2 秒ぐらい TtCppLisp => 13 秒ぐらい、で劇的に遅いです。 コンパイラは Borland C++ Compiler 5.5.1 を使用しています。 !!! 実装済みの代表的な機能 * 基本的なデータ型 * ブロック構造(block と return-from) * ガーベージコレクタ * クロージャ 細かいの * ディスパッチングマクロ(一部) * 異なる数値型同士の計算 * 文字列リテラル中のエスケープ !!! 簡単な使い方 コマンドプロンプトより Debug ディレクトリまたは Release ディレクトリの中の ttcpplisp.exe を実行してください。 lisp のプロンプトが開始されますので、 そこに式を記述してください。 コマンドライン引数にファイルを指定すると、 それを lisp として読み込み実行します。 load-library 関数を使用してもファイルから lisp を読み込みます。 !!! 実装されているデータ型 * t * nil * リスト * シンボル * 数 ** 実数 *** 整数 *** 浮動小数点数 *** 分数 ** 複素数 * 文字列 * 関数 ** lambda ** 特別式 ** マクロ !!! 実装されている関数 システム系 * car * cdr * quote * cons * list * atom * eq * equal * not * null * and * or * progn * if * cond * lambda * macro * function * fset * set-function-name * defun * symbol-function * eval * apply * funcall * set * setq * macroexpand * let * block * return-from * load-library 算術系 * complex * + * - * * * / * mod * = * /= * > * < * >= * <= 他いろいろ * gc * print * terpri * every * mapcar !!! 既知のバグ * 変数に値が定義されない状態になる場合がある。 ** どうも Release のみで発生する ** 最適化が問題なのかも ** nil or t を評価後、変数に値が束縛されていないエラーを複数発生の後に 終了させると、致命的エラーが発生する。 * 参照カウンタが負になる場合がある * function の引数に関数が未定義のシンボルを指定した場合落ちる
Administrator's Sign:
freeze
Attachment
New:
Sign:
(412916 bytes, at 2007/09/12 01:15:39)
Rename
Title:
Administrator's Sign: