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 |

2011-01-03

KMRCLを眺める(231) SIGNAL-KEY-TO-NUMBER

| 21:58 | KMRCLを眺める(231) SIGNAL-KEY-TO-NUMBER - わだばLisperになる を含むブックマーク はてなブックマーク - KMRCLを眺める(231) SIGNAL-KEY-TO-NUMBER - わだばLisperになる

strmatch.lispも眺め終えたので、今回はKMRCLのsignals.lispから、SIGNAL-KEY-TO-NUMBERです。

signals.lispはPOSIXのシグナル関係の処理系依存のところを纏めたもののようです。

SIGNAL-KEY-TO-NUMBERは、名前のとおりシグナルの名前から番号に変換するもので定義は、

(defun signal-key-to-number (sig)
  "These signals and numbers are only valid on POSIX systems, perhaps
some are Linux-specific."
  (case sig
    (:hup 1)
    (:int 2)
    (:quit 3)
    (:kill 9)
    (:usr1 10)
    (:usr2 12)
    (:pipe 13)
    (:alrm 14)
    (:term 15)
    (t
     (error "Signal ~A not known." sig))))

となっています。

動作は、

(kl::signal-key-to-number :usr1)
;=> 10

というところ

C.I.CLを眺める(4) MAKE-CIRCULAR-LIST

| 01:50 | C.I.CLを眺める(4) MAKE-CIRCULAR-LIST - わだばLisperになる を含むブックマーク はてなブックマーク - C.I.CLを眺める(4) MAKE-CIRCULAR-LIST - わだばLisperになる

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

前回の ENSURE-CIRCULAR との違いは、こちらの方はMAKE-LISTの様に新しくリストを指定した個数の要素で作成するというところです。

(defun make-circular-list (size &key initial-element)
  "
RETURN: a new circular list of length SIZE.
POST: (circular-length (make-circular-list size)) == (values size 0 size)
"
  (let ((list (make-list size :initial-element initial-element)))
    (setf (cdr (last list)) list)
    list))

動作は、

(import 'com.informatimago.common-lisp.list:make-circular-list)

(setq *print-circle* 'T)
;=> T
(make-circular-list 5)
;=> #1=(NIL NIL NIL NIL NIL . #1#)

というところ

ゲスト



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