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-04-10

KMRCLを眺める(137) ENSURE-STRING

| 19:31 | KMRCLを眺める(137) ENSURE-STRING - わだばLisperになる を含むブックマーク はてなブックマーク - KMRCLを眺める(137) ENSURE-STRING - わだばLisperになる

今回はKMRCLのstrings.lispから、ENSURE-STRINGです。

ENSURE-〜という命名もCLでは良く見掛けますが、任意の入力を目的の所望の形式に叶うように良きに計らって変換して返したりするようなものにこういう名前が用いられることが多いようです。

動作は、

(MAPCAR #'KL:ENSURE-STRING 
        (LIST "foo"
              'FOO
              '|foo|
              #\F
              42
              (make-broadcast-stream)))
⇒
("foo" "FOO" "foo" "F" "42" "#<BROADCAST-STREAM {100DB8A351}>")

というところ。

定義は、

(defun ensure-string (v)
  (typecase v
    (string v)
    (character (string v))
    (symbol (symbol-name v))
    (otherwise (write-to-string v))))

となっています。