ラベル newLISP の投稿を表示しています。 すべての投稿を表示
ラベル newLISP の投稿を表示しています。 すべての投稿を表示

2013年7月12日金曜日

newLISP部屋@Lingr

なんとなく作ってみました。

newlisp に関して質問があれば、どなたでも気軽にどうぞ。

はたしてメンバーが増えるのだろうか

2013年4月9日火曜日

newLISP for Windows x64

年明けに言っていた、Win64向けに対応させたnewLISPのソースコードとバイナリを試験的に公開してみます。ライセンスは配布元と同じくGPLv3です。

newLISP for Windows x64

また、最近になって本家の v.10.4.7 からWin64をサポートする動きが見られるため、それが叶ってしまえばこのページはお役御免ということになります(参考)。

2013年2月4日月曜日

英数字を180度回転した文字を表示

twitter→ɹəʇʇɪʍʇのように英数字を180度回転して表示する方法 という記事を見かけたのでxyzzyに移植してみました。ネタ被ってないよね?

やってることはROT13などと同じで、連想リストを利用した単純な文字の相互変換です。 ただし、xyzzyではバッファに出力すると化けてしまう文字が幾つかあるので、その辺は適当に作ってます。

おまけとして、Emacsから移植したzone.lと組み合わせたコードも載せてあります。下の実行例を見てみると、なぜか特定の文字が変換されなかったりするようですが…。まあ書き捨てのコードですので勘弁してください。

newLISP版もあります。こっちはUnicode文字列を直接扱えるので若干コードがさっぱりしてます。

使い方

  • M-x: flippy - ミニバッファに入力した文字がステータスラインに反転して表示される
  • M-x: flippy-region - リージョンに対してFlippyを実行する

2011年10月8日土曜日

Win64でnewLISPをコンパイルする

newLISPのソースコードを改造して、Win64環境でコンパイルできるようしてみました。64ビットプログラミングの練習とnewlispの内部動作を調べることを目的とした個人的なビルドなので、とりあえず動く程度の出来なのは勘弁してください。基にしたnewLISPのバージョンはv.10.3.3です。
作成したバイナリはこのエントリの最下に置いておきます。GPLライセンスに則るならソースか差分パッチも公開すべきなんだろうけどどうしよう…。

パッケージに同梱しているマニュアル(doc/INSTALL)によるとnewLISPがコンパイル可能なメモリモデルはILP32とLP64のみらしく、Win64のメモリモデルであるLLP64はサポートされていない様子。 newLISPではlong型を基本として、整数もポインタも同じビット長として扱っているため、その辺も考慮してソースを改造する必要があります。

NOTE, that newLISP can only be compiled for the IPL32 and LP64 memory models.

主要なメモリモデルの違いは以下の通り:

ILP32 intとlongとポインタ型が32ビットのモデル。一般的な32ビット環境。
LP64 longとポインタ型が64ビットのモデル。64ビットLinuxではこの環境になる。
LLP64 intとlong型が32ビットで、long longとポインタ型が64ビットのモデル。別名IL32P64。

公式サイトにてWin32バイナリが配布されているのでWin64バイナリ自体にメリットは特にないんですが、将来的にWin64バイナリのコンパイルがサポートされたら幸せになれるかもしれません(主に私が)。

コンパイル環境

  • Windows7 amd64
  • MinGW-w64 - TDM-GCCをインストールした
  • CygwinまたはMSYS - tarballの解凍など、シェル環境に必要

download (Size:272kB)

2011年7月29日金曜日

newLISP v.10.3.2リリースノート翻訳

安定版となるnewLISP v.10.3.2がリリースされていたのでリリースノートをざっくりと翻訳。
newLISPダウンロードページ

とりあえず、newlisp本体とjson.lspが文字列内部のunicodeエスケープ(\unnnn)を解釈してくれるようになったこと、ココには載ってないけどget-urlのカスタムヘッダーのバグが修正されたことが嬉しい。

原文はこちら。配布ファイルのdoc/CHANGESも参照のこと。

newLISP® v.10.3.2 リリースノート

Addtions (追加機能)

  • 文字列が処理可能なクオート文字にUnicodeエンコードを追加。
    例として"\u03b1\u03b2\u03b3"はギリシャ文字"αβγ"に変換される。 この機能はUTF8版newLISPで利用できる。

Other improvements (その他改良点)

  • 自己参照リストの変更におけるエラーメッセージを改良
  • Implicit indexingのエラーメッセージを改善
  • MS Windowsのパス名に利用されるMBCS(Multi Byte Character Set)を理解するように
  • filter, index, clean, exists, for-all関数のスピードアップ
  • series関数の第2引数に関数が与えられた際の処理速度向上
  • find-all関数の第3引数が与えられた際の処理速度向上
  • map関数のメモリ管理と処理速度を改善
  • json.lspがバックスラッシュを含む文字列を処理可能になった

Bug fixes (バグフィックス)

  • filter, index, clean, exists, for-all関数における空リストの扱いを修正
  • inc,dec,++,--関数が引数チェックをしていなかったのを修正
  • dotree関数にブール引数を渡すとクラッシュする問題を修正
  • multi-lineモードにおけるバッファオーバーフローを修正
  • timer関数を再帰的に利用した際のバグを修正
  • read-line関数のEOF指示子をクリアしていなかったことによるバグを修正
  • xfer-event関数が渡す引数を転送した総バイト数から現在転送中のバイト数に変更

Compatibility (前バージョンとの互換性)

このリリースを実行するためのMac OS Xの最小バージョンはLeopard 10.5です。 このリリースはMac OS X Tiger 10.4では動作しないでしょうが、Mac OS X用の デフォルトMakefile(makefile_darwin_utf8)ではまだコンパイルが可能です。

v.10.3.0からv.10.3.2のバージョン遷移において、ほとんどのスクリプトは修正なしに動作する。
xfer-event関数の仕様が変更されたので、その点のみ注意すること。

2011年6月14日火曜日

[newLISP]cygwinでのコンパイルを通す

cygwinからnewlispをコンパイルしようとすると
nl-sock.c:2010: error: ‘ICMP6_FILTER’ undeclared (first use in this function)
と言われてコンパイルエラーが起こってしまうので、それを解決します。
  1. $CYGWIN/usr/include/netinet/icmp6.h があるかどうか確認する。あれば2.を飛ばして3.へ。
  2. GNU謹製のicmp6.hを拾ってきて1.のパスに追加する。(→icmp6.h GNU - Google 検索
    ※cygwinのインストーラに上記のヘッダがあれば尚良しですが、見つけられなかったので…
  3. 以下のパッチを参考に nl-sock.c を書き換える。
    --- nl-sock.c.orig Tue Jun 14 12:52:46 2011
    +++ nl-sock.c Tue Jun 14 12:51:30 2011
    @@ -60,6 +60,7 @@
     #endif /* end UNIX */
     
     #ifdef CYGWIN
    +#include <netinet/icmp6.h>
     #define ICMP_ECHO 8
     
     struct icmp
    
  4. コンパイルする

2011年4月5日火曜日

newLISPのコード片を貼り付けるサイト

Pastebin.comがnewLISPのシンタックスハイライトに対応しているらしいので試しに貼り付けてみる。
見た目は他のSchemeのシンタックスとあまり変わらないから分かりにくいけど、ちゃんとキーワードが強調表示されているみたい。

探してみたら他にもあったので手当たり次第にリンクしておこう。
基本関数へのマニュアルリンクが付与されるおまけつきとか。なにこれ素敵じゃない。

2010年11月14日日曜日

[newLISP]guiserverをインストールせずに使いたい

newlispに付属のGUI(GUI-Server)は各種ファイルが既にインストールされている状態で ないと利用できないので、なるべく任意のディレクトリで使うようにするための方法です。

※newlispのバージョンアップに伴い利用できなくなる可能性があります
※Linux環境(CentOS_5)にて動作確認

環境変数NEWLISPDIRにguiserver.{jar.lsp}が置いてあるディレクトリを指定してプロセスを起動させる
(ソースパッケージを展開した場合は"newlisp-10.x.x/guiserver"以下にあるはず)

% pwd 
/home/kosh/src/newlisp-10.2.16/guiserver
% NEWLISPDIR=`pwd` newlisp table-demo.lsp
newLISP-GS v.1.42 on Linux
(guiserverが起動する)

いちいちタイプするのが面倒なら設定ファイル ~/init.lsp (または .init.lsp)に以下のコードを記述する

(env "NEWLISPDIR" "/path/to/guiserver"))

guiserverディレクトリ内にあるデモスクリプトを眺めるのはこれでOK

newLISPエディタを起動させる

エディタを起動させる場合にはもう少し手を加える必要がある。
guiserver-edit.lspを編集してハードコートされているnewlispのパスを書き換える。

% sed 's!"/usr/bin/newlisp "!/path/to/newlisp!g' newlisp-edit.lsp > newlisp-edit-alt.lsp
% newlisp newlisp-edit-alt.lsp

また、main-args関数にはnewlispが実行されたときの引数がリストとして格納されているので

"/usr/bin/newlisp " -> (main-args 0)

のように置換しても良い。

2010年11月8日月曜日

newLISP v10.2.X インストールメモ

以前書いた情報 がすっかり古くなったので書き直し。

現在(2010年11月時点)の安定版はnewlisp v.10.2.8
開発版はnewlisp v.10.2.17です。

このページは以下のURLと配布ファイルに同梱しているREADMEを参考に作成しています。

newLISP - Downloads

ダウンロードページ

配布されているtarballの中身

newlisp-xx.yy.zz
|-- makefile_XXX - 各種Makefile
|-- newlisp.c - newlispのソースコード
...
|-- doc/ - ドキュメント・マニュアル
|   |-- MemoryManagement.html
...
|   `-- newlisp_manual.html
|-- example/ - サンプルスクリプト
|-- guiserver/
|   |-- guiserver.jar - GUI-Server本体
|   |-- guiserver.lsp - GUI-Serverとの通信用スクリプト
    ...
|   |-- images/ - 各種アイコン
|   `-- java/ - guiserver.jarのソースコード
|-- modules/ - モジュール
|-- qa-specific-tests/ - テスト用ファイル
|-- util/ - その他
...
|-- configure
|-- configure-alt
`-- README

インストーラからインストールする

WIn32/MacOSX/Ubuntuには公式でインストーラが配布されているので導入は楽

ただしWin32のUTF-8版バイナリはインストーラとは別に配布されている

wget http://www.newlisp.org/downloads/UTF-8_win32/newlisp.exe

公式のダウンロードページの下部には有志によるDebianリポジトリも作成されているので、これを利用して自動更新する方法もある。

apt and dpkg repository for newLISP

ソースからmakeする

野良ビルドの基本としてconfigureスクリプトがあるが、代わりに同梱されている configure-alt スクリプトを利用すると自分の環境に合わせたmakefileを作成して くれる。

具体的には以下

  • OSの判別
  • データ型モデル(LP64/ILP32)の判別
  • UTF-8の利用(デフォルトはyes)
  • readlineライブラリの有無
  • IPv4/6利用の選択(デフォルトはIPv4)
  • インストールディレクトリの選択 (--prefix=/usr/local)
  • などなど

※newLISPではこの辺をautomakeを使わずに自前で用意している。
※configure-altも失敗する可能性があるので、その時はconfigureスクリプトを使う

guiserverはソースと共にjarファイルが同梱されているのでjavaコンパイラは必要ない。もちろんguiserverを起動させる場合にはjava仮想マシン(JVM)がインストールされている必要がある。

実際にコンパイルしてみる

% wget http://www.newlisp.org/downloads/newlisp-10.2.X.tgz
% tar zxvf newlisp-10.2.X.tgz
% cd newlisp-10.2.X
% ./configure-alt
% make
% make check
% sudo make install

最小インストール

Win32,UNIX系OSどちらも実行バイナリ単体で動作する。

% sudo cp newlisp /usr/local/bin/newlisp

開発版と安定版を使い分ける場合はバージョン番号で管理すると便利。

% sudo install -m 755 ./newlisp /usr/local/bin/newlisp-10.2.16
% sudo ln -sf /usr/local/bin/{newlisp-10.2.16,newlisp}

% ls -l /usr/local/bin/newlisp*
    lrwxrwxrwx 1 root root     30 11月  1 11:59 /usr/local/bin/newlisp -> /usr/local/bin/newlisp-10.2.16
    -rwxr-xr-x 1 root root 270520 11月  1 11:57 /usr/local/bin/newlisp-10.2.16

2010年5月19日水曜日

[newLISP]今日の無題

自作したnewlisp.elの挙動がおかしかった原因が少し分かったのでメモ。

newlispのREPLはデフォルトで行編集ライブラリ(readline)が使えるが、 複数行を入力する場合は[cmd]~[/cmd]タグでS式を囲まなければいけないのが newlispの面倒な仕様。

newlisp.elの newlisp-eval関数はその辺を考慮してプロセスに文字列を 送るようにしているのだけど、なぜか効果が無いようでREPLバッファに 入力が溜まってしまう現象がよく起きていた。

2010年2月9日火曜日

newLISP基礎文法最速マスター

待っていても誰も書きそうにないので自分で作りました。

これは何?

Lisp風スクリプト言語newLISPの文法一覧です。(→newLISP公式ページ)
S式について多少でも知っている人は他の処理系と比較してもよし。
そもそもS式を知らない人はLisp入門にしてもよし。 (先に他の有名なScheme処理系やCommon Lispに手を出す方が無難ですが)
newLISPの簡易リファレンスとして利用できるかと思います。ただし無保証です。

2010年1月30日土曜日

Scheme コードバトンに参加

次回3月予定のShibuya.lispに向けて、現在面白げな企画が進行中です。

Shibuya.lisp に向けて Scheme コードバトンするのはどうか?
第1回 Scheme コードバトンのお知らせ - ひげぽん OSとか作っちゃうかMona-

;; ■ これは何か?
;; Scheme のコードをバトンのように回していき面白い物ができあがるのを楽しむ遊びです。
;; 次回 Shibuya.lisp で成果を発表します。
;; Scheme 初心者のコードを書くきっかけに、中級者には他人のコードを読む機会になればと思います。
;;
;; ■ 2 つのルール
;;
;; (1)自分がこれだと思える変更をコードに加えて2日以内に次の人にまわしてください。
;; 「人に優しい」変更なら何でも良い。1文字の変更でも可。
;; 「人に優しい」とは例えば、次の人が読みやすいコードを書くなど。
;; コードを削るのもあり。
;;
;; (2)次の人にまわしコードが変更されるのを"見守る"。
;; この説明書きを含めてバトンが伝わった事を必ず確認してください。
;; 止まっていたら助けてあげてください。

自分もg00001さんのバトンから派生したCL版を弄らせてもらいました。ライブラリまわりの導入に手間取ったのがちょっと痛かったかも…とりあえずテスタくらいの役割は果たせたんじゃないかと思います。

それと、newlispも一応lisp風スクリプト言語ということで大元となるhigeponさんのバトンからforkしてnewlisp版も作ってみることに。
こちらはCLやSchemeと違って正しいコーディングスタイルが分かってないので、つらつらと手の赴くままに。

動作例は以下

[~/code/newlisp]$ newlisp scheme_button.lsp http://gist.github.com/273424.txt # 辞書ファイルをURLから取得
allowance: 割当量 [y/n/q]? y
defect: 欠点 [y/n/q]? n
errand: 使いっ走り [y/n/q]? y
exploration: 探査、探検 [y/n/q]? y
heap: 積み重ねた物 [y/n/q]? y
;; saving dict...done
[~/code/newlisp]$ cat words.txt
(allowance "割当量" 1 0)
(defect "欠点" 0 1)
(errand "使いっ走り" 1 0)
(exploration "探査、探検" 1 0)
(heap "積み重ねた物" 1 0)

scheme版と同様にコマンドラインからの利用で、 newlispバイナリ一つあれば動作するようになっているとは思います。

CL版弄った時間もあわせると2日以上かかっていますがまあ気にしない。

2009年12月8日火曜日

今日の無題

対応するプラットフォームの多さ[1]が魅力の一つのnewLISPですが、MaemoというOSベースのインターネットタブレット"N810"に移植した人がいるようです。

(apply newLisp Maemo)

guiserver(Javaで書かれたnewLISPのGUI環境)も稼動するようでリンク先の参考画像はなかなか派手目。CUIの起動画面にも凝っていてちょっとカッコイイです。

[1] Linux, MacOSX, FreeBSD, OpenBSD, NetBSD, Solaris/SunOS, Win32(MinGW) などなど

関連リンク

2009年9月12日土曜日

Swank server for newLISP

ひっそりと更新。

以前挑戦した「newLISPをSLIMEから動かす」が、一応お遊び程度に完成したので公開してみます。

http://github.com/kosh04/newlisp-files/tree/master >> swank-newlisp.lsp

簡単なREPLが使えるくらいで、SLIMEの特徴であるシンボル名の補完、定義ファイルへのジャンプなどなど実装されていない残念な出来です。

2009年7月15日水曜日

今朝の無題

Lispは未来に生きている - リリカル☆Lisp開発日記 - http://blog.bugyo.tk/lyrical/2009/02/lisp-15.html

そろそろCLのuniversal-timeがキリ番になりますね。

---

そういえば自分のGitHubのリポジトリをちまちま更新しました。 主に個人用に作っているのでフォローしている人がいるとなんだか申し訳ない気分です。

今のところの更新頻度は emacs-lisp > newlisp-files >> xyzzy-lisp こんな感じです(左に行くほど頻度が高い)。 研究室の端末がDebianなのでEmacsを弄りがちで、xyzzyとの挙動の違いを自作のxyzzy.elで埋めるのが主な目的。

---

それにしてもnewLISPは話題に乗りませんねー。 毎回検索の上位にこのブログが入っているのを見ると嬉しいような悲しいような…

変な愛着が湧いて今でも手探りで調べているnewLISP、もうちょっと他の人が言及してくれてもいいのに。と思うならまず自分からですかね。

2009年7月9日木曜日

[VT100]アスキーアニメーション[AA]

端末エミュレータのエスケープシーケンスを使ったアスキーアニメなんてものがある事を知ったのでちょっと自分でキャプチャしてみました。画像はGIFファイルです。

やり方は簡単で、エスケープシーケンスを含むテキストファイル(*.vt)を端末エミュレータで表示するだけ。ただしファイルの中身は一行づつ、パラパラ漫画のように時間差で表示させる方がいいみたいです(catコマンドを使うとアニメーションを見る余裕なく表示されてしまうので)。

今回はこの時間差表示を実現するためにnewlispをスクリプトとして使っていますが、端末で実行できるならCでも他のスクリプト言語で書いてもたぶんOK。

しかしこのアスキーアニメーション、実際に表示(というより再生)するために 当時の人は何の呪文を使っていたんでしょうかね。

使用したnewlispのソースは以下

ウィンドウのキャプチャ方法

上の画像はスクリーンキャストで保存した連番ファイルを結合してGIFファイルにしたものです。(本当は動画形式でもキャプチャしたんですけどね。GoogleVideoへのアップロードはすでに停止されているし、YouTubeのアカウントは持ってないし、ニコニコ動画だと見れない人もいるし)

スクリーンキャストの方法については以下が参考になります。というよりそのまま使っています。

Linuxでスクリーンキャストを作成するには - SourceForge.JP Magazine http://sourceforge.jp/magazine/07/03/23/0037212

これでウィンドウのキャプチャ画像がいくらかできたのでGIF形式でまとめる

$ convert *.miff -delay 90 出力ファイル.gif

しかしキャプチャ画像だとやたらカクカクしてますね。 なので一度実際に実行してみるか他の人がYouTubeにアップロードしたものを見ることをお勧めします。

これは面白い!

キャプチャ画像ラストはアスキーアニメーションつながりで有名な"sl"コマンドです。 もしかしたらこのslも*.vtファイルで再現できるのかもしれませんね。


参考リンク

2009年4月19日日曜日

GitHubアカウントをとりました

いくつかファイルを置いておいたので、よかったらどうぞ。

GitHubアカウント - github.com/kosh04

  • xyzzy/
    • etc/
      • newLISP - newlisp-mode用キーワードファイル
    • site-lisp/
      • cl.l - xyzzyにないCL関数の移植のようなもの
      • corman_search.l - CLのsearch関数移植
      • cygwin.l - 主にmanコマンドを利用するため
      • newlisp.l - newLISP編集用メジャーモード
      • redef.l - xyzzy組み込み関数を再定義したもの
      • util.l - 自作関数など
  • emacs-lisp/
    • xyzzy.el - xyzzy/CommonLisp/SLIMEの便利そうな関数を色々移植したもの
  • newlisp-files/
    • init.lsp - CLっぽい関数とか
    • newlisp.el - newLISP編集用メジャーモード

真面目にファイルの配布するならライセンスやマニュアルも考えるべきなんだろ うけど、今日はとりあえずここまで。gitに慣れるのに手間取って疲れた…

[追記]

GitHubのwebページがUTF-8らしいので、それに伴いファイルの文字コードも一部 UTF-8になっています。で、xyzzyだとファイルのコンパイル・ロード用の関数が デフォルトではShift_JISしか対応しないようなので、compile-file/loadの代わ りにmc-compile-file/mc-load-file関数などを使って明示的に文字コードを指定 してくだしあ。

後でREADMEくらいは作ろう。

[追記 (2009-12-08)]

ブラウザの文字化けよりもライブラリを実際に使う時の利便を考慮して、元のsjisに戻しました。

2009年3月11日水曜日

本家にばれてた

以前書いたEmacs用のnewlisp-modeが本家様に気づかれたようです。さすがマイナー言語。

http://www.newlisp.org/code/newlisp.el

というかこれならシンボル補完とか色付けとかもっと頑張ればよかった。 最近newLISP弄るのはもっぱらxyzzyからだしなあ。

SLIME+newLISPを完成させるか。。。

2009年2月27日金曜日

newLISPの特徴、軽くまとめ

去年から少しずつ弄っていたnewLISPですが、 人様に見せるようなものは出来なかったのでとりあえず使ってみて分かったことだけでも書いておきます。 これからnewLISPを使ってみようかと思っている人の参考にでもなれば、と。

リンク

マニュアル・リファレンス

  • newLisp (newLISPのメモリ管理方法(ORO)についての翻訳)

サンプル・ライブラリ

日本語の情報源

今のところほとんど見つかりませんが...

特徴

  • 開発は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のリンクを追加