Contents 

Warabi [蕨] Lisp for Java/CORBA and C#

                      あなたは 番目の訪問者です。

(あなたは2001年11月11日以来番目の訪問者です。)

この Web サイトを開始以来 2001年11月10日まで、6120人の訪問がありました。

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 for Java/CORBA の特徴
Features about Warabi Lisp for Java/CORBA

Warabi Lisp は、Java で記述されています。JavaApplet、JavaAWT と CUI で動作します。
この Lisp の特徴は以下のようになっています。
  1. オブジェクト指向機能 --- Java のオブジェクト指向機能と互換
    未実現
  2. Java API のサポート --- JavaAPI のインタプリタ実行が可能
    一部の API をサポート(28-Jan-2001)。
  3. Java との親和性 --- Java クラスのサポート
    Javaの動的なクラスロードと実行をサポート。但し実行は以下の制限がある。
      引数と結果は文字列1個のみで、static なメソッドを実行する。(27-Jan-2001)
  4. マルチスレッドオブジェクト --- オブジェクト単位でマルチスレッド実行
    S 式関数によるマルチスレッド対応関数作成(7-Feb-2001)
  5. アプレット化可能な Lisp 処理系
    実装済み (20-Jan-2001)
  6. 他言語インタフェース
    JNI による実装 (25-Jan-2001)
  7. メモリマネージャはすべて JavaVM で行なう
    リストや文字列など、すべてのデータ型を Java のクラスで実装する。
    このため、Lisp 側で GC を含むメモリマネージャを作成する必要がない。
  8. コンポーネント指向
    リスプのリーダや評価機能をコンポーネントとして、他のプログラムから 利用することが可能。未実現。
  9. 分散化機能
    CORBA/IDL をサポート(8-Feb-2001)。Lispサーバ、クライアントとして動作する。 CORBA コールバックをサポート。
  10. その他(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


Warabi [蕨] Lisp for Java/CORBA の関数一覧

The function list for Warabi Lisp for Java/CORBA

  1. リスト関連
    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式)
  2. シンボル
    set, value-of (Java)
  3. 文字列
    string= (Java)
  4. 特殊形式
    defun, setf, setq, if, quote, progn, loop, return, catch (Java)
    defmacro (Java)
    let (S式)
  5. 入出力
    read, read-from-string, print(*1), write-to-string, write (Java)
    terpri, read-string (Java)
  6. ファイル
    load, open, close(*1), sload (Java)
  7. 評価
    apply, eval (Java)
  8. 述語関数
    atom, listp, eq, = (Java)
    equal, null, not, integerp, floatp, numberp, stringp,
    symbolp, threadp, errorp (S式)
  9. 算術関数(整数、浮動小数のみ)
    +, -, *, /, >=, <=, <, >, = (Java)
    zerop, 1+, 1-, plusp, minusp, inc, dec (S式)
  10. タイプ(クラス)
    type-of, class-of (Java)
  11. 他言語インタフェース
    jni:send-string(*2), java:load-class, java:send-string (Java)
  12. Java API
    ta:open, ta:append (Java)
  13. スレッド
    thread, result, finishp, run (Java)
    sync, sync2, sync3, monitor (S式)
  14. マルチユーザ
    su, value-of, describe, sload(Java)
    all-user-set(S式)
  15. CORBA
    start-orb-server, orb, callback, regist-callback, callback-result (java)
  16. エラー
    error, throw, catch (Java)
    break (S式)
  17. その他
    oblist, gc, time, exec, ed (Java)
  18. 定数
    t, nil, version(*3) (Java)
*1 --- CUI 版のみ表示
*2 --- JavaApplet 版ではファイルのアクセスは一般的にはできない
*3 --- バージョンを格納している変数

return to Start


Warabi [蕨] Lisp for C# の関数一覧

The function list for Warabi Lisp for C#

  1. リスト関連
    car, cdr, cons, list (C#)
    first, second, third, cadr, cddr, nth, nthcdr, member, remove (S式)
  2. 述語関数
    eq, = (C#)
    null, listp, atom, ... (S式)
  3. 特殊形式
    defun, setf, setq, if, quote, progn(C#)
  4. 数値
    +, -, *, /, >=, <=, >, <, = (C#)
    zerop (S式)
  5. 入出力
    read-from-string (C#)
  6. ファイル
    load, open, close (C#)
  7. その他
    oblist, type-of (C#)
  8. 定数
    t, nil, version (C#)

return to Start


Warabi [蕨] Lisp の歴史

The history for Warabi Lisp

16-Jan-2001ver 0.00作成開始
17-Jan-2001ver 0.01動作開始
18-Jan-2001ver 0.02Window(awt.TextArea)からの Lisp 実行
19-Jan-2001ver 0.021Applet対応(JDK のみ)
20-Jan-2001ver 0.03Applet対応(IE (MS VM) もサポート)
22-Jan-2001ver 0.04Jar ファイル化、WWW 公開
23-Jan-2001ver 0.041算術演算等のサポート
24-Jan-2001ver 0.042eval, load のサポート
25-Jan-2001ver 0.05JNI(Java Native Interface)による他言語インタフェースのサポート
26-Jan-2001ver 0.051Java のクラスローダのサポート
27-Jan-2001ver 0.06システム関数のルックアップを O(1) に改良(内部クラスで実装)
27-Jan-2001ver 0.061動的に Java のメソッドを実行可能にした
28-Jan-2001ver 0.062TextArea の Java API をサポート
29-Jan-2001ver 0.063Tak 動作: tak6 = 25.366sec on my machine
30-Jan-2001ver 0.064list, time, gc のサポート
31-Jan-2001ver 0.07シンボルの扱いの変更、束縛方法の変更
1-Feb-2001ver 0.071exec のサポート、tak6 = 24.025sec on my machine
3-Feb-2001ver 0.072Eval の改良。tak6 = 13.108sec on my machine
3-Feb-2001ver 0.073引数チェックの改良。tak6 = 3.676sec, tak7 = 21.401sec on my machine
4-Feb-2001ver 0.08浮動小数のサポート。tak6 = 2.444sec, tak7 = 14.871 sec on my machine
4-Feb-2001ver 0.08tak6.0 = 2494 msec, tak7.0 = 15512 msec on my machine
5-Feb-2001ver 0.09スレッドのサポート。環境を保って Lisp Listner スレッド生成、Evaluator生成/実行
6-Feb-2001ver 0.10 tak6 = 1.312sec, tak7 = 8.202sec, tak6.0 = 1.362sec, tak7.0 = 8.462sec
7-Feb-2001ver 0.11 マルチスレッド用関数の増強(finishp, sync, sync2, sync3)、Common Lisp関数作成(S式)
8-Feb-2001ver 0.111 start.lsp を起動時にロードするようにした、open, close, write, terpri, string= の追加。
8-Feb-2001ver 0.12 Lisp 評価機構を CORBA サーバ、クライアントとして動作するようにした。
9-Feb-2001ver 0.121 マシンを越えての CORBA 通信の確認。
10-Feb-2001ver 0.122 マルチユーザ対応開始。
10-Feb-2001ver 0.123 マルチユーザ対応中。リーダ、環境、エバルをコンポーネント化完成。
10-Feb-2001ver 0.124 マルチユーザ対応中。別環境版一応動作。
11-Feb-2001ver 0.125 マルチユーザ基本部完成。同一環境版(将来のユーザ間通信のため)。
11-Feb-2001ver 0.13 マルチユーザ用拡張部(ツール)作成。value-of, sload, describe 作成。
12-Feb-2001ver 0.131 マルチユーザ用拡張部作成2(su, run 作成)。 エラー統一の開始(error, throw の作成)。
13-Feb-2001ver 0.132 エラー統一。catch, throw の作成。エラーキャッチの作成。
14-Feb-2001ver 0.133 マクロのサポート。tak-6,7,6.0,7.0,8 = (1212 7440 1242 7771 46708) msec
15-Feb-2001ver 0.14 CORBA のコールバックをサポート。
18-Feb-2001ver 0.143 tak-6,7,6.0,7.0,8 = (1091 6770 1142 7080 42662) msec。
javadoc 対応のコメントに変更中。
19-Feb-2001ver 0.144 tak-6,7,6.0,7.0,8 = (611 3856 661 4146 24195) msec。
21-Feb-2001ver 0.145 class-of の作成。
24-Feb-2001C# ver 0.00 〜0.02 版。C# への移植開始、 Read-Print Loop 版動作。
25-Feb-2001C# ver 0.03 Read-Eval-Print Loop 完成。
兎に角 Tak 動作版 tak-7,8 = (9 57) sec。単位に注意。
26-Feb-2001C# ver 0.031 load, 算術演算(整数のみ)
27-Feb-2001C# ver 0.032 open, close, list, eq, start.lsp の起動時ローディング
28-Feb-2001C# ver 0.033 oblist
4-Mar-2001C# ver 0.034 Visual Stadio.Net β1版を導入、read-from-string
10-Mar-2001C# ver 0.04 Window 版 Lisp Listner 作成
11-Mar-2001C# ver 0.041 Windows版でヒストリ機能を追加
17-Mar-2001C# ver 0.042 入力のオーバーフローエラーをハンドリング
3-Sep-2001ver 0.145a ROSE(TM)2000 対応のためにリーダを拡張
13-Jul-2002C# .NET 正式版で動作する C# Console 版のアップ

return to Start


Window 版 WarabiLisp for C# の概観

ver 0.041〜

ver 0.04

 

 

 

 

 

 

 

 

 

return to Start

return to Start