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-06-23

KMRCLを眺める(167) STRING-DEFAULT-CASE

| 13:19 | KMRCLを眺める(167) STRING-DEFAULT-CASE - わだばLisperになる を含むブックマーク はてなブックマーク - KMRCLを眺める(167) STRING-DEFAULT-CASE - わだばLisperになる

今回は、KMRCLのsymbols.lispからSTRING-DEFAULT-CASEです。

定義は、

;;; Symbol functions

(eval-when (:compile-toplevel :load-toplevel :execute)
  (when (char= #\a (schar (symbol-name '#:a) 0))
    (pushnew :kmrcl-lowercase-reader *features*))
  (when (not (string= (symbol-name '#:a)
                      (symbol-name '#:A)))
    (pushnew :kmrcl-case-sensitive *features*)))

(defun string-default-case (str)
  #+(and (not kmrcl-lowercase-reader)) (string-upcase str)
  #+(and kmrcl-lowercase-reader) (string-downcase str))

というものなのですが、文字列を処理系のデフォルトケース応じて変換するもののようです。

デフォルトケースの判定には、:KMRCL-LOWERCASE-READERが、*FEATURES*にあるかどうかを判定しています。

動作は、

(KL::STRING-DEFAULT-CASE "foo")
;⇒ "FOO"

というところ