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 |

2009-12-03

KMRCLを眺める (29) with-ignore-errors

| 22:30 | KMRCLを眺める (29) with-ignore-errors - わだばLisperになる を含むブックマーク はてなブックマーク - KMRCLを眺める (29) with-ignore-errors - わだばLisperになる

今回は、KMRCLのmacros.lispの中からWITH-IGNORE-ERRORSです。

その名前から想像できるように、ボディ部をIGNORE-ERRORSで包むというもので定義はこんな感じです。

(defmacro with-ignore-errors (&rest forms)
  `(progn
     ,@(mapcar
        (lambda (x) (list 'ignore-errors x))
        forms)))
(WITH-IGNORE-ERRORS 
  (ERROR "foo")
  (ERROR "bar")
  (ERROR "baz"))

(PROGN
  (IGNORE-ERRORS (ERROR "foo"))
  (IGNORE-ERRORS (ERROR "bar"))
  (IGNORE-ERRORS (ERROR "baz")))

のように展開されます。式が一つずつIGNORE-ERRORSで包まれています。

(WITH-IGNORE-ERRORS 
  (ERROR "foo")
  (ERROR "bar")
  (ERROR "baz"))
;=> NIL
;   #<SIMPLE-ERROR {100BD5FFE1}>

とにかく手短にエラーを無視したいときには便利なのではないでしょうか。