Hatena::Groupcadr

わだばLisperになる このページをアンテナに追加 RSSフィード

2004 | 12 |
2005 | 01 | 02 | 07 | 10 | 11 |
2006 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 11 |

2010-12-19

C.I.CLを眺める(2) PROPER-LIST-P

| 20:02 | C.I.CLを眺める(2) PROPER-LIST-P - わだばLisperになる を含むブックマーク はてなブックマーク - C.I.CLを眺める(2) PROPER-LIST-P - わだばLisperになる

今回は、C.I.CLのlist.lispからPROPER-LIST-Pです。

名前からして真正リストかどうかを判定するもののようですが、定義は、

(defun proper-list-p (object)
  "
RETURN: whether object is a proper list
NOTE:   terminates with any kind of list, dotted, circular, etc.
"
  (labels ((proper (current slow)
             (cond ((null current)       t)
                   ((atom current)       nil)
                   ((null (cdr current)) t)
                   ((atom (cdr current)) nil)
                   ((eq current slow)    nil)
                   (t                    (proper (cddr current) (cdr slow))))))
    (and (listp object) (proper object (cons nil object)))))

となっています。

SRFI-1で言えば、proper-list?ですが、循環リストを検出するために、properというローカル関数を定義して使っているようです。

動作は、

(import 'com.informatimago.common-lisp.list:proper-list-p)

(proper-list-p ())
;=> T

(proper-list-p 'a)
;=> NIL

(proper-list-p '(a))
;=> T

(proper-list-p '(a . b))
;=> NIL

(proper-list-p '#0=(even odd . #0#))
;=> NIL

というところ。

逆引きCommon Lispに記事を寄稿してくれる方募集

| 18:58 | 逆引きCommon Lispに記事を寄稿してくれる方募集 - わだばLisperになる を含むブックマーク はてなブックマーク - 逆引きCommon Lispに記事を寄稿してくれる方募集 - わだばLisperになる

あったらそれなりに便利かもしれない、ということで開始された逆引きCommon Lisp(並びにScheme/Clojure)ですが、いつの間にやら開始から2年となりました。

自分は、地味にでも記事を増やしたいなと思っている一人ですが、記事を直接WiLiKiに記述する以外にも既存のブログエントリーから記事を募ってみるのはどうだろうとふと思いました。

逆引きCLの編集方針と、ライセンスに同意して頂ける方、という制限がついてしまうのですが、寄稿しても良いよ!という方は、このブログのコメントででも教え頂けると嬉しいです。

教えて頂いたドキュメントを自分が移植したいと思います(もちろん直接転載して頂いてもOKです)

編集方針: 編集に関する基本方針

ライセンス: ライセンスについて

ちなみに、Googleドキュメントのフォーム機能が便利そうだったので、記念にアンケートを作成してみました。

逆引きCLについて何かありましたら是非ご意見下さい。

ゲスト



トラックバック - http://cadr.g.hatena.ne.jp/g000001/20101219