Diary
Features
Java/CORBA
C#
JavaApplet
Window-C#(Pic)
Download
Functions-Java
Functions-C#
Example
History
Links
|
|
Warabi [蕨] Lisp for
Java/CORBA
マルチユーザ対応並列分散リスプ ---
Java/CORBA Lisp
21-Feb-2001 version 0.145
3-Sep-2001 version 0.145a for ROSE(TM) 2000
This Lisp system starts from 16-Jan-2001 in Warabi.
Copyright (C) 2001 GOMI Hiroshi
Warabi [蕨] Lisp for C#
17-Mar-2001 version 0.042
This Lisp system starts from 24-Feb-2001 in Warabi
Copyright (C) 2001 GOMI Hiroshi
Warabi Lisp for JavaApplet
Input Area
Result Area
return to Start
WarabiLisp
のダウンロード(実行形式)
・ Warabi Lisp for Java/CORBA のダウンロード
(約 120 kbyte)
The Download for Warabi Lisp for Java/CORBA
・ Warabi Lisp for C# on Console のダウンロード
(約 14 kbyte)
The Download for Warabi Lisp for C#
on Console
・ Warabi Lisp for C# のダウンロード
(約 22 kbyte) (.NET beta1 only)
The Download for Warabi Lisp for C#
(.NET beta1 only)
return to Start
WarabiLisp Licences
WarabiLisp is free under like FreeBSD Licence.
return to Start
Warabi Lisp の開発中記
1-Mar-2001
ここで紹介します Warabi Lisp
は、筆者が単身赴任中に日曜大工で作ったものです。
開発方針は、兎に角、最近流行っている技術をすべて詰め込もうと考えています。
また、将来の技術も入れていこうと思っています。この意味では、
「WarabiLisp は永遠に開発中です」
ということになります。
Lisp
処理系自身の開発よりも、新規技術の取り込みを中心にしていますので、言語自身はシンプルにしようと考えています。
ここでは実行コードをダウンロードできるようにしていますが、このプロジェクトに興味を持たれた方はメイルを送ってもらえれば、ソースなどを送らせていただきます。
h-m-gomi@mx5.nisiq.net
3-Mar-2001
C# 版の開発に Visual Stadio.NET
を導入しました。これまではコンソールでの開発でした。両者の有効な点を生かしながら、共存して、開発していくことになるでしょう。
10-Mar-2001
C# 版で Window 版を作成。この開発に Visual Stadio.NET
を使用しています。数回、落ちました。
13-Jul-2002
C# 版(beta1) は beta2, 正式版で動作せず。
C# Console 版は、正式版で動作。
Java 版は JRE 1.4.0 で動作確認。
return to Start
Warabi Lisp は、Java で記述されています。JavaApplet、JavaAWT
と CUI で動作します。
この Lisp の特徴は以下のようになっています。
- オブジェクト指向機能 --- Java
のオブジェクト指向機能と互換
未実現
- Java API のサポート --- JavaAPI
のインタプリタ実行が可能
一部の API をサポート(28-Jan-2001)。
- Java との親和性 --- Java
クラスのサポート
Javaの動的なクラスロードと実行をサポート。但し実行は以下の制限がある。
引数と結果は文字列1個のみで、static
なメソッドを実行する。(27-Jan-2001)
- マルチスレッドオブジェクト ---
オブジェクト単位でマルチスレッド実行
S 式関数によるマルチスレッド対応関数作成(7-Feb-2001)
- アプレット化可能な Lisp 処理系
実装済み (20-Jan-2001)
- 他言語インタフェース
JNI による実装 (25-Jan-2001)
- メモリマネージャはすべて JavaVM
で行なう
リストや文字列など、すべてのデータ型を Java
のクラスで実装する。
このため、Lisp 側で GC
を含むメモリマネージャを作成する必要がない。
- コンポーネント指向
リスプのリーダや評価機能をコンポーネントとして、他のプログラムから
利用することが可能。未実現。
- 分散化機能
CORBA/IDL をサポート(8-Feb-2001)。Lispサーバ、クライアントとして動作する。
CORBA コールバックをサポート。
- その他(ROSE対応)
ROSE(TM)2000 の mdl
ファイルを読み込めるようにリーダを拡張。
return to Start
Warabi [蕨] Lisp for Java/CORBA の例
The examples for Warabi Lisp for Java/CORBA
- (cons 1 2) --> (1 . 2)
- (cons 1 '(2 3)) --> (1 2 3)
- (car '(1 2 3)) --> 1
- (cdr '(1 2 3)) --> (2 3)
- (cdr '(1 . 2)) --> 2
- (add-list '(1 2 3) 4) --> (1 2 3 4) == (nconc '(1 2 3 4) (list 4))
- (setf var 100) --> 100, var --> 100
- (defun foo (x y) (cons x y)) --> foo, (foo 10 20) --> (10 . 20)
- (if t 10 20) --> 10, (if nil 10 20) --> 20
- (apply '(lambda (x y) (cons x y)) '(10 20)) --> (10 . 20)
- (length ()) --> 0, (length '(1 2 3 4)) --> 4
- (read-from-string "(1 2 3)") --> (1 2 3)
- (+ 2 3) --> 5
- (eval '(cons 1 2)) --> (1 . 2)
- (load "lisp.lsp") --> T
- (jni:send-string "DLL" "argument") --> "result" via DLL.dll
- (java:load-class "Class") --> "Class" with loading Java class file
- (java:send-string "Class" "Method" "Argument") --> "result"
via Class.Method("Argument") in Class.class
- (oblist) --> (car cdr + - ...)
- (oblist t) --> "car --- <system: Function$Car> ..."
- (ta:open col line x y) --> create text-area and display it
- (ta:append text-area "abcdefg") --> append "abcdefg" to text-area
- (gc) --> T
- (time) --> return CurrentTimeMillis
- (list 1 2 3 4) --> (1 2 3 4)
- (exec "program.exe" "arg1" "arg2") --> program
- (+ '(1 2 3) "abc") --> "(1 2 3)abc"
- (ed "lisp.html") --> open "lisp.html" by editor
- (thread) --> <Thread: thread-0>
- (thread '(tak 21.0 14.0 7.0)) --> <Thread: thread-1>
- (result <Thread: thread-2>) --> result
- (loop (return 123)) --> 123
- (write "abc") -->abc"abc"
- (thread '(start-orb-server "LispORB")) --> start ORBServer as other thread
- (orb "(tak 21 14 7)" "LispORB") --> "14"
- (catch 'qwe (throw 'qwe 123)) --> 123
- (catch nil (car 1)) --> "CAR"
- ((lambda (x y) (cons x y)) 1 2) --> (1 . 2)
(注) 現時点で、スレッドやプログラム、関数は first class object ではありません。
return to Start
The function list for Warabi Lisp for Java/CORBA
- リスト関連
car, cdr, cons, add-list, length, list, set-car, set-cdr (Java)
first, second, third, cadr, cddr, nth, nthcdr, nconc, append, remove,
reverse, member, mapcar, get, put, replace, push, pop (S式)
- シンボル
set, value-of (Java)
- 文字列
string= (Java)
- 特殊形式
defun, setf, setq, if, quote, progn, loop, return, catch (Java)
defmacro (Java)
let (S式)
- 入出力
read, read-from-string, print(*1), write-to-string, write (Java)
terpri, read-string (Java)
- ファイル
load, open, close(*1), sload (Java)
- 評価
apply, eval (Java)
- 述語関数
atom, listp, eq, = (Java)
equal, null, not, integerp, floatp, numberp, stringp,
symbolp, threadp, errorp (S式)
- 算術関数(整数、浮動小数のみ)
+, -, *, /, >=, <=, <, >, = (Java)
zerop, 1+, 1-, plusp, minusp, inc, dec (S式)
- タイプ(クラス)
type-of, class-of (Java)
- 他言語インタフェース
jni:send-string(*2), java:load-class, java:send-string (Java)
- Java API
ta:open, ta:append (Java)
- スレッド
thread, result, finishp, run (Java)
sync, sync2, sync3, monitor (S式)
- マルチユーザ
su, value-of, describe, sload(Java)
all-user-set(S式)
- CORBA
start-orb-server, orb, callback, regist-callback, callback-result (java)
- エラー
error, throw, catch (Java)
break (S式)
- その他
oblist, gc, time, exec, ed (Java)
- 定数
t, nil, version(*3) (Java)
*1 --- CUI 版のみ表示
*2 --- JavaApplet 版ではファイルのアクセスは一般的にはできない
*3 --- バージョンを格納している変数
return to Start
The function list for Warabi Lisp for C#
- リスト関連
car, cdr, cons, list (C#)
first, second, third, cadr, cddr, nth, nthcdr, member, remove (S式)
- 述語関数
eq, = (C#)
null, listp, atom, ... (S式)
- 特殊形式
defun, setf, setq, if, quote, progn(C#)
- 数値
+, -, *, /, >=, <=, >, <, = (C#)
zerop (S式)
- 入出力
read-from-string (C#)
- ファイル
load, open, close (C#)
- その他
oblist, type-of (C#)
- 定数
t, nil, version (C#)
return to Start
Warabi [蕨] Lisp の歴史
The history for Warabi Lisp
16-Jan-2001 | ver 0.00 | 作成開始 |
17-Jan-2001 | ver 0.01 | 動作開始 |
18-Jan-2001 | ver 0.02 | Window(awt.TextArea)からの Lisp 実行 |
19-Jan-2001 | ver 0.021 | Applet対応(JDK のみ) |
20-Jan-2001 | ver 0.03 | Applet対応(IE (MS VM) もサポート) |
22-Jan-2001 | ver 0.04 | Jar ファイル化、WWW 公開 |
23-Jan-2001 | ver 0.041 | 算術演算等のサポート |
24-Jan-2001 | ver 0.042 | eval, load のサポート |
25-Jan-2001 | ver 0.05 | JNI(Java Native Interface)による他言語インタフェースのサポート |
26-Jan-2001 | ver 0.051 | Java のクラスローダのサポート |
27-Jan-2001 | ver 0.06 | システム関数のルックアップを O(1) に改良(内部クラスで実装) |
27-Jan-2001 | ver 0.061 | 動的に Java のメソッドを実行可能にした |
28-Jan-2001 | ver 0.062 | TextArea の Java API をサポート |
29-Jan-2001 | ver 0.063 | Tak 動作: tak6 = 25.366sec on my machine |
30-Jan-2001 | ver 0.064 | list, time, gc のサポート |
31-Jan-2001 | ver 0.07 | シンボルの扱いの変更、束縛方法の変更 |
1-Feb-2001 | ver 0.071 | exec のサポート、tak6 = 24.025sec on my machine |
3-Feb-2001 | ver 0.072 | Eval の改良。tak6 = 13.108sec on my machine |
3-Feb-2001 | ver 0.073 | 引数チェックの改良。tak6 = 3.676sec, tak7 = 21.401sec on my machine |
4-Feb-2001 | ver 0.08 | 浮動小数のサポート。tak6 = 2.444sec, tak7 = 14.871 sec on my machine |
4-Feb-2001 | ver 0.08 | tak6.0 = 2494 msec, tak7.0 = 15512 msec on my machine |
5-Feb-2001 | ver 0.09 | スレッドのサポート。環境を保って Lisp Listner スレッド生成、Evaluator生成/実行 |
6-Feb-2001 | ver 0.10 |
tak6 = 1.312sec, tak7 = 8.202sec, tak6.0 = 1.362sec, tak7.0 = 8.462sec
| 7-Feb-2001 | ver 0.11 |
マルチスレッド用関数の増強(finishp, sync, sync2, sync3)、Common Lisp関数作成(S式)
| 8-Feb-2001 | ver 0.111 |
start.lsp を起動時にロードするようにした、open, close, write, terpri, string= の追加。
| 8-Feb-2001 | ver 0.12 |
Lisp 評価機構を CORBA サーバ、クライアントとして動作するようにした。
| 9-Feb-2001 | ver 0.121 |
マシンを越えての CORBA 通信の確認。
| 10-Feb-2001 | ver 0.122 |
マルチユーザ対応開始。
| 10-Feb-2001 | ver 0.123 |
マルチユーザ対応中。リーダ、環境、エバルをコンポーネント化完成。
| 10-Feb-2001 | ver 0.124 |
マルチユーザ対応中。別環境版一応動作。
| 11-Feb-2001 | ver 0.125 |
マルチユーザ基本部完成。同一環境版(将来のユーザ間通信のため)。
| 11-Feb-2001 | ver 0.13 |
マルチユーザ用拡張部(ツール)作成。value-of, sload, describe 作成。
| 12-Feb-2001 | ver 0.131 |
マルチユーザ用拡張部作成2(su, run 作成)。
エラー統一の開始(error, throw の作成)。
| 13-Feb-2001 | ver 0.132 |
エラー統一。catch, throw の作成。エラーキャッチの作成。
| 14-Feb-2001 | ver 0.133 |
マクロのサポート。tak-6,7,6.0,7.0,8 = (1212 7440 1242 7771 46708) msec
| 15-Feb-2001 | ver 0.14 |
CORBA のコールバックをサポート。
| 18-Feb-2001 | ver 0.143 |
tak-6,7,6.0,7.0,8 = (1091 6770 1142 7080 42662) msec。
javadoc 対応のコメントに変更中。
| 19-Feb-2001 | ver 0.144 |
tak-6,7,6.0,7.0,8 = (611 3856 661 4146 24195) msec。
| 21-Feb-2001 | ver 0.145 |
class-of の作成。
| 24-Feb-2001 | C# ver 0.00 |
〜0.02 版。C# への移植開始、 Read-Print Loop 版動作。
| 25-Feb-2001 | C# ver 0.03 |
Read-Eval-Print Loop 完成。
兎に角 Tak 動作版 tak-7,8 = (9 57) sec。単位に注意。
| 26-Feb-2001 | C# ver 0.031 |
load, 算術演算(整数のみ)
| 27-Feb-2001 | C# ver 0.032 |
open, close, list, eq, start.lsp の起動時ローディング
| 28-Feb-2001 | C# ver 0.033 |
oblist
|
4-Mar-2001 | C#
ver 0.034 |
Visual Stadio.Net β1版を導入、read-from-string
|
10-Mar-2001 | C#
ver 0.04 |
Window 版 Lisp Listner 作成
|
11-Mar-2001 | C#
ver 0.041 |
Windows版でヒストリ機能を追加
|
17-Mar-2001 | C#
ver 0.042 |
入力のオーバーフローエラーをハンドリング
|
3-Sep-2001 | ver
0.145a |
ROSE(TM)2000 対応のためにリーダを拡張
|
13-Jul-2002 | C# |
.NET 正式版で動作する C# Console 版のアップ
|
return to Start
Window 版 WarabiLisp for C#
の概観
ver 0.041〜
ver 0.04
return to Start
|