ansify 0.01.00 をリリースしました

今までバラバラに作ってた ANSI Common Lisp からもらってきたようなものを1つにまとめました。
具体的には

が全部入ってます。

使い方(開発者向け)

今まで公開してた condition-restart と symbol-macrolet は lisp パッケージからエクスポートしてましたがその方法だと問題ありなので、ansify では専用のパッケージをを使うようにしました。普通に export すると lisp パッケージのシンボルと衝突するので shadowing-import するようにしてあります。
数が多いんで必要なものを全部 shadowing-import する ansify::install という関数も用意しておきました。

(eval-when (:execute :compile-toplevel :load-toplevel)
  (require "ansify"))

(defpackage :my-package
  ...)

(in-package :my-package)

(eval-when (:execute :compile-toplevel :load-toplevel)
  (ansify::install))

やってることは片っ端から shadowing-import なので、特定のオペレータのみ使いたいなどの場合は個別に shadowing-import したり defpackage の :shadowing-import-from に指定してもだいじょぶです。

(eval-when (:execute :compile-toplevel :load-toplevel)
  (require "ansify"))

(defpackage :my-package
  (:use #:lisp #:editor)
  (:shadowing-import-from :ansify
   #:destructuring-bind #:etypecase ...))

取り込まれた拡張は deprecated になります。

  • condition-restart
  • symbol-macrolet
  • typespec+

は deprecated になります。狙ったわけでもないのに ansify と同時にインストールしておいても問題は起きない*1んですが、ansify の方へ移行お願いします。しばらくはそのまま置いておきますがそのうち消えて無くなります。
condition-restart に含まれていた condition-restart-support.l(eval-region などから再起動を選択できるようにするもの)が ansify には含まれていません。無いと困るという人がいたら twitter か↓コメントか何かで連絡ください。

あと、condition-restart の再起動と ansify の再起動は互換性ないです。ansify::restart-case で用意した再起動は ansify::find-restart で探す必要があります(condition-restart:find-restart では見つけられないです)。

*1:ansify を install したパッケージでは ansify のものが使われる。それ以外のパッケージでは lisp から export されてる旧拡張のものが使われる。