#:g1: lw-compatの紹介

Posted 2014-01-11 15:00:00 GMT

(LISP Library 365参加エントリ)

 LISP Library 365 の12日目です。

lw-compatとはなにか

 lw-compatは、ヨーロッパでは根強い人気のLispWorksで良く使われる拡張関数を実装したパッケージです。

パッケージ情報

パッケージ名lw-compat
Quicklisp
CLiKihttp://cliki.net/lw-compat
Quickdocshttp://quickdocs.org/lw-compat

インストール方法

(ql:quickload :lw-compat)

試してみる

 どんな関数があるかは、Quickdocsで確認できます。

 そんなに沢山の定義はないのですが、適当に取り上げてみます。

when-let系

(when-let (x t)
  (print x))
;>>  
;>>  T 
;=>  T

(when-let* ((x t)
            (y nil)
            (x y))
  (print x))
;=>  NIL

 whenとletが合体したもの。when-let*の方はSRFI-2のand-let*的でもあります。

with-unique-names/rebinding

 with-unique-namesは、On Lispでいうwith-gensym、rebindingは、once-onlyです。

nconcf/removef

 ncon+setf、remove+setfのようなものです。nconcfはnconcのありがちなすっぽ抜けを防止できます。

;; すっぽ抜け
(let ((x (list 1 2 3 4))
      (y '() ))
  (nconc y x)
  y)
;=>  NIL

(let ((x (list 1 2 3 4)) (y '() )) (nconcf y x) y) ;=> (1 2 3 4) (let ((x (list 1 2 3 4))) (removef x 2) x) ;=> (1 3 4)

lw-compatの紹介/関連記事等

まとめ

 今回は、lw-compatを紹介してみました。
LispWorksには、lw-compatに含まれるものだけでなくまだまだ便利な拡張があります。そのうち紹介してみたいところ。

comments powered by Disqus