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

KMRCLを眺める(208) CMSG-C

| 23:36 | KMRCLを眺める(208) CMSG-C - わだばLisperになる を含むブックマーク はてなブックマーク - KMRCLを眺める(208) CMSG-C - わだばLisperになる

今回は、KMRCLのconsole.lispからCMSG-Cです。

前回のCMSGを一捻りしたもののようで定義は、

(defvar *console-msgs-types* nil)

(defun cmsg-c (condition template &rest args)
  "Push CONDITION keywords into *console-msgs-types* to print console msgs
   for that CONDITION.  TEMPLATE and ARGS function identically to
   (format t TEMPLATE ARGS) "
  (when (or (member :verbose *console-msgs-types*)
            (member condition *console-msgs-types*))
    (apply #'cmsg template args)))

となっていて、*CONSOLE-MSGS-TYPES*にメッセージを出力する状況のタイプをリストで格納して置いて、CMSG-Cの引数にそのタイプが指定されていた場合は、出力、そうでなければスルーというもののようです。

動作は、

(let ((kl::*console-msgs-types* '(:debug)))
  (kl:cmsg-c :debug "~37@{*~}" t)
  (kl:cmsg-c :debug "~37:@<~A~>" "蟲取り")
  (kl:cmsg-c :debug "~37@{*~}" t))
;=> NIL
;->
;; *************************************
;;                  蟲取り                 
;; *************************************

というところ。

:verboseは予め組込まれています。

しかし、なんとなく微妙な使い勝手に感じました…。

ちなみに、FORMATの引数の"~37@{*~}"というのは、@t33fさんに教えて頂きました。ありがとうございます!

ゲスト



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