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-08

KMRCLを眺める(135) FIRST-CHAR

| 14:50 | KMRCLを眺める(135) FIRST-CHAR - わだばLisperになる を含むブックマーク はてなブックマーク - KMRCLを眺める(135) FIRST-CHAR - わだばLisperになる

今回はKMRCLのstrings.lispから、FIRST-CHARです。

動作は

(KL:FIRST-CHAR "first")
⇒ #\f

というところです。定義は、

(defun first-char (s)
  (declare (simple-string s))
  (when (and (stringp s) (plusp (length s)))
    (schar s 0)))

となっています。

引数が文字列でない、もしくは空文字列の場合は、nilを返すようになっていますが、型宣言も付いているので、文字列でない場合は、エラーを上げる処理系も多いのではないかと思います(SBCL等)

単にLENGTHに文字列以外が渡らないようにするためのガードなのかもしれません。