リンク
- newLISP - Wikipedia, the free encyclopedia
- newLISP - Home - 公式ページ
- newLISPの哲学と歴史
- newLISP Fan Club [RSS] - フォーラム
- Twitter @newlisp
マニュアル・リファレンス
- newLISP Users Manual and Reference - 関数リファレンス、マニュアル
- newLISP - An Interactive Tutorial - newLISP入門
- newLISP Code Patterns
- Introduction to newLISP - Wikibooks, collection of open-content textbooks
- Tao Effect Blog ≫ Blog Archive ≫ How newLISP Took My Breath (And Syntax) Away
- newLisp (newLISPのメモリ管理方法(ORO)についての翻訳)
サンプル・ライブラリ
日本語の情報源
今のところほとんど見つかりませんが...- newLisp (紫藤のWiki)
- newLISPのまとめ / short short story または 晴耕雨読な日々 / 新リスプな日々 - 積極的にnewLISPを使ってらっしゃる方です
-
舌足らずなブログ - このブログ
- その他 - "Code collections and blogs"
特徴
- 開発はC言語 (GUI部分はJava)
- ライセンスはGPLv3
- 主にスクリプト言語として利用する
newLISP is a Lisp-like, general-purpose scripting language.
- newLISP-GS: JavaベースのGUIライブラリが付属
付属のエディタはこのGUI-Serverを呼び出している - プラットフォームは Windows *BSD Linux Solaris OSX …とにかくたくさん。
Linux/Tru64 UNIX/*BSD/Mac OSX/SunOS/Solaris/AIX/Win32(MinGW)/OS2 - 64ビット対応
- IPv4とIPv6の切り替えが可能 (開発中)
- 実行ファイルは200kバイトくらいとかなり小さい
- 単体の実行ファイルが作れる - newlisp.exeとソースを結合する方法
- HTTP/CGIサーバ専用モード - HTTP-only server mode
ライブラリ
とりあえず確認したライブラリ ※当方使ったことないです。OpenGLは面白いかも。→ C-Libraries, Modules
- MySQL SQLite GTK-server OpenGL freeGLUT GNU-GMP OpenSSL zlib FTP Postscript POP3 SMTP
言語の特徴
- newLISP と CL/Scheme の比較を参照 (訳してみたもの)
- ラムダ式はリストと同様に扱える。
- 動的スコープ / 動的束縛
この辺はEmacsLispに似ている。 - ドット対が存在しない。
- 関数の引数は足りなくても余分にあってもよい。足りない引数はnilに束縛される。
これはnewLISP特有のものではなく、Interlispの特徴でもある。
→Lispの進化 957行目参照
((lambda (x y z) (list x y z)) 0 1 2 3 4 5) => (0 1 2)
- Implicit indexing (暗黙のインデックス機能)
リストや文字列などのシーケンスにアクセスする機能。("newLISP" 0) => "n"
- 関数の引数は基本的に値のコピーが渡される
バージョン10 から一部破壊的な関数に置き換わっている。
マクロも引数を評価しない点では参照渡しとほぼ同等。 - コンテキスト
LISP-1(関数と変数の名前空間が共有)であるnewLISPに複数の名前空間を提供する機能
CommonLispのパッケージの概念と似ているかもしれない
これを使えばマクロ定義においての外部からの変数束縛を避けることが出来る。
ハッシュの代用にもなる。 - 共有ライブラリの呼び出しが可能
(import "printf" "libc.so.6") (printf "%s World" "HELLO") ;=> "HELLO World"
- Perl互換正規表現 (PCRE: Perl-Compatible Regular Expressions)
- Unicode対応 (UTF-8)
- XMLサポート
- ネットワークAPI多数 (TCP, UDP)
- Prolog風パターンマッチ関数が利用できる
(match '(* 2 ? 4) '(0 1 2 3 4)) ;=> ((0 1) 3) (unify '(p X Y a) '(p Y X X)) ;=> ((Y a) (X a))
- 組み込み関数は350個くらい。
- 以下は全て同じ文字列を表す。バックスラッシュが少し見やすくなるかも。
- "C:\\home\\lxuser\\newlisp"
- {C:\home\lxuser\newlisp}
- [text]C:\home\lxuser\newlisp[/text]
主に不満な点
- http://lisperblog.blogspot.com/2008/11/blog-post_18.html
- 関数名に予約されていて変数に使えない名前がある。これはたまにイラッとくる。 例: fn sym name args
- エラーが貧弱。(デバッガはあるらしいが)
- 「リスト遊び」がしにくい。(ドット対がないためconsがほぼlistと同じ)
- マクロが書きにくい。(名前空間共有、`,@がない、macroexpandがない)
- シーケンスを扱う関数全てがunicode対応というわけではない。
- (= nil '()) => nil
- lambdaの代わりにfnが使えるとか、condのように複数条件分岐が使えるifとか、("foo" 0) => "f"とか、arcの機能がちらほら。歴史的に考えてnewLISPの方が先なんだろうけど。
ChangeLog
- 2009/02/27 - 初版
- 2011/02/22 - 内容の整理整頓
- 2011/09/13 - Twitterのリンクを追加
0 件のコメント:
コメントを投稿