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

KMRCLを眺める (10) awhen2

| 01:04 | KMRCLを眺める (10) awhen2 - わだばLisperになる を含むブックマーク はてなブックマーク - KMRCLを眺める (10) awhen2 - わだばLisperになる

今日は、KMRCLのmacros.lispの中からAWHEN2です。

これもAIF2と同じくEXPORTされてないようなので、使う時にはEXPORTしましょう。

名前を見て分かるように、AIF2のWHEN版です。

AIF2より使いどころがなさそう。使用例もいまいち思い付きません…。

(LET ((HT (MAKE-HASH-TABLE)))
  (SYMBOL-MACROLET ((HT-FOO (GETHASH :FOO HT)))
    (SETF HT-FOO NIL)
    
    (AWHEN2 HT-FOO
      (SETF HT-FOO (LIST 42 IT))

    HT-FOO))
;⇒ (42 NIL)
;   T

定義は前回のAIF2を下敷きにしています。

(defmacro awhen2 (test &body body)
  `(aif2 ,test
         (progn ,@body)))

LISPイメージにとにかくなんでも入れて置くと便利

| 22:46 | LISPイメージにとにかくなんでも入れて置くと便利 - わだばLisperになる を含むブックマーク はてなブックマーク - LISPイメージにとにかくなんでも入れて置くと便利 - わだばLisperになる

今日Twitterで「CLで(Tue Nov 10 05:15:05 +0000 2009)のような日付をパーズするライブラリを探している」というつぶやきを見付けました。

自分はこういう場合にはどうやって目的のものを探すかというと、

  1. とりあえず、slime-apropos(C-c C-d a)する
  2. キーワードは、パーズということなので、parse
  3. 自分は、手元のパッケージをあるだけ詰め込んだイメージを常用しているので、沢山引っ掛かってくる
  4. 一覧が表示されるので、そこからdate等で絞り込む。
  5. METABANG.UTILITIES:PARSE-DATE-AND-TIMEがそれっぽい名前なので試してみる
  6. エラーになるのでこの書式には対応おらず駄目らしい
  7. NET.TELENT.DATE:PARSE-TIMEはどうか
  8. (DATE:PARSE-TIME "Tue Nov 10 05:15:05 +0000 2009") ;⇒ 3466818905
  9. これで行けるらしい

という風にイメージの中から適当に探しています。

イメージの中から探すには、読み込めるだけ全部のライブラリを読みこんである方が有利なのですが、こうやって探せるのが便利なので可能な限り多くのパッケージを読み込んでダンプしています。

イメージの作成方法は、処理系によって違うと思いますが、大抵の処理系でダンプできます。

自分が今使っているSBCLのパッケージを調べてみましたが、お蔭でなんだか良く分からないものまで300位パッケージがあります…。

  1. ACL-COMPAT-SYSTEM
  2. ACL-COMPAT.EXCL
  3. ACL-COMPAT.MP (ACL-COMPAT-MP ACL-MP)
  4. ACL-COMPAT.SOCKET (ACL-SOCKET SOCKET)
  5. ACL-COMPAT.SYSTEM (ACL-COMPAT.SYS)
  6. ALEXANDRIA.0.DEV (ALEXANDRIA)
  7. ANAPHORA
  8. ANAPHORA-BASIC
  9. ANAPHORA-SYMBOL
  10. ARC-COMPAT-ASD
  11. ARC-COMPAT.SETAGAYA.MC (ARC)
  12. ARTIFICIAL-FLAVORS (AF)
  13. ASDF
  14. ASDF-ADDITIONS
  15. ASDF-ADDITIONS-SYSTEM
  16. ASDF-CACHE
  17. ASDF-INSTALL
  18. ASDF-INSTALL-CUSTOMIZE
  19. ASDF-INSTALL-SYSTEM
  20. ASDF-MOPTILITIES
  21. ASDF-SYSTEM-CONNECTIONS
  22. ASERVE-SYSTEM
  23. ASPECTL (AL)
  24. ASPECTL-USER (AL-USER)
  25. ASPECTL.CLOS-MOP (AL.CLOS-MOP)
  26. ASPECTL.DYNACLOS (AL.DYNACLOS)
  27. ASPECTL.DYNASCOPE (AL.DYNASCOPE)
  28. ASPECTL.DYNASCOPE.SPECIAL-SYMBOLS
  29. ASPECTL.MIXINS (AL.MIXINS)
  30. ASPECTL.POINTCUTS (AL.POINTCUTS)
  31. BABEL
  32. BABEL-ENCODINGS
  33. BORDEAUX-THREADS (BT)
  34. BORDEAUX-THREADS-SYSTEM
  35. BPM
  36. BPM.PRETTIFY
  37. BPM.SYSTEM
  38. CFFI
  39. CFFI-FEATURES
  40. CFFI-SYS
  41. CFFI-UTIL
  42. CFFI-UTIL-SYSTEM
  43. CHUNGA
  44. CL+
  45. CL+SSL
  46. CL+SSL-SYSTEM
  47. CL-AA-SYSTEM
  48. CL-BASE64 (BASE64)
  49. CL-BASE64-SYSTEM
  50. CL-CONT (CONT)
  51. CL-CONT-ASD
  52. CL-DEF
  53. CL-DEF.SYSTEM
  54. CL-FAD (FAD)
  55. CL-FAD-TEST
  56. CL-GLFW (GLFW)
  57. CL-GLFW-SYSTEM
  58. CL-GLFW-TYPES
  59. CL-GLFW-TYPES-SYSTEM
  60. CL-INTERPOL (INTERPOL)
  61. CL-INTERPOL-ASD
  62. CL-MATCH
  63. CL-NCURSES
  64. CL-NCURSES-ASD
  65. CL-PATHS-SYSTEM
  66. CL-PPCRE (PPCRE)
  67. CL-PPCRE-ASD
  68. CL-PREVALENCE
  69. CL-SERIALIZER (SERIALIZER)
  70. CL-SERIALIZER-SYSTEM
  71. CL-STM (STM)
  72. CL-STM.SYSTEM
  73. CL-UNICODE
  74. CL-UNICODE-ASD
  75. CL-UNICODE-NAMES
  76. CL-UTILITIES
  77. CL-UTILITIES-SYSTEM
  78. CL-VECTORS-SYSTEM
  79. CL.EXT.DACF.UNIFICATION (UNIFY)
  80. CLEX
  81. CLOSER-COMMON-LISP (C2CL)
  82. CLOSER-COMMON-LISP-USER (C2CL-USER)
  83. CLOSER-MOP (C2MOP)
  84. CLOSURE-COMMON-SYSTEM
  85. CLOSURE-HTML (CHTML)
  86. CLOSURE-MIME-TYPES
  87. CLOSURE-SYSTEM
  88. CLRFI-1
  89. CLX-SYSTEM
  90. COMMON-IDIOMS
  91. COMMON-IDIOMS-SYSTEM
  92. COMMON-LISP (CL)
  93. COMMON-LISP-USER (CL-USER)
  94. CONTAINERS-SYSTEM
  95. CONTEXTL
  96. CONTEXTL-COMMON-LISP (CXCL)
  97. CONTEXTL-USER (CX-USER)
  98. CORBIT
  99. CXML
  100. CXML-STP (STP)
  101. CXML-STP-IMPL
  102. CXML-STP-SYSTEM
  103. CXML-SYSTEM
  104. CXML-XMLS
  105. DATE-CALC
  106. DATE-CALC.SYSTEM
  107. DE.DATAHEAVEN.CHUNKED-STREAM-MIXIN
  108. DIFFLIB
  109. DNSBL
  110. DNSBL-COMPAT-ASD
  111. DOM
  112. DOMTEST
  113. DOMTEST-TESTS
  114. DPMS
  115. DRAKMA
  116. DRAKMA-ASD
  117. EDITOR-HINTS.NAMED-READTABLES (NAMED-READTABLES)
  118. FARE-CLOS-MATCH
  119. FARE-MATCHER
  120. FARE-MATCHER-EXTENSIONS (MATCH-EXTS)
  121. FARE-QUASIQUOTE
  122. FARE-UTILS
  123. FLEXI-STREAMS (FLEX)
  124. FLEXI-STREAMS-SYSTEM
  125. GL
  126. GLX
  127. GRAY-STREAM
  128. GSLL (GSL)
  129. HAX
  130. HTML-GLISP
  131. HTMLGEN-SYSTEM
  132. HUNCHENTOOT (TBNL)
  133. HUNCHENTOOT-ASD
  134. HW
  135. IO.ENCODINGS (IOENC)
  136. IO.ENCODINGS.SYSTEM
  137. IO.MULTIPLEX (IOMUX)
  138. IO.MULTIPLEX-SYSTEM
  139. IO.STREAMS
  140. IO.STREAMS.SYSTEM
  141. IOLIB
  142. IOLIB-ALIEN-GROVEL
  143. IOLIB-ALIEN-GROVEL-SYSTEM
  144. IOLIB-POSIX (ET)
  145. IOLIB-POSIX-SYSTEM
  146. IOLIB-UTILS
  147. IOLIB-UTILS-MISC.SYSTEM
  148. IOLIB-UTILS-PACKAGE.SYSTEM
  149. IOLIB-UTILS-SYMBOLS.SYSTEM
  150. IOLIB.BASE
  151. IT.BESE.ARNESI (ARNESI)
  152. IT.BESE.ARNESI.MOPP (MOPP)
  153. IT.BESE.ARNESI.MOPP%INTERNALS
  154. IT.BESE.ARNESI.SYSTEM
  155. IT.BESE.FIVEAM (FIVEAM 5AM)
  156. IT.BESE.FIVEAM.SYSTEM
  157. ITERATE (ITER)
  158. JP
  159. JSON
  160. JSON-RPC
  161. JSON-SYSTEM
  162. KEYWORD
  163. KLACKS
  164. KMR-MOP
  165. KMRCL (KL)
  166. KMRCL-SYSTEM
  167. KOTO.ICONV (ICONV)
  168. LALR
  169. LISP-MARKUP-LANGUAGE-2 (LML2)
  170. LISP-UNIT
  171. LISP-UNIT-SYSTEM
  172. LISPWORKS
  173. LML2-SYSTEM
  174. LML2-TESTS-SYSTEM
  175. LOCAL-TIME
  176. LOCAL-TIME.SYSTEM
  177. MATCH
  178. MBE
  179. MD5
  180. MD5-SYSTEM
  181. MECAB
  182. METABANG.BIND (METABANG-BIND BIND)
  183. METABANG.BIND-SYSTEM
  184. METABANG.CL-CONTAINERS (CONTAINERS CL-CONTAINERS)
  185. METABANG.MOPTILITIES (MOPTILITIES MOPU)
  186. METABANG.UTILITIES (METATILITIES)
  187. METATILITIES-BASE-SYSTEM
  188. METATILITIES-SYSTEM
  189. MKCORE
  190. MYCL-UTIL
  191. MYCL-UTIL-SYSTEM
  192. NET-TELENT-DATE-SYSTEM
  193. NET.ASERVE
  194. NET.ASERVE.CLIENT
  195. NET.HTML.GENERATOR
  196. NET.NTUNIOTT.CL.EXT.SYNTAX.DEFINER (DEFINER CL.EXT.SYNTAX.DEFINER)
  197. NET.SOCKETS (SOCKETS)
  198. NET.SOCKETS-SYSTEM
  199. NET.TELENT.DATE (DATE)
  200. NET.TUXEE.AA (AA)
  201. NET.TUXEE.AA-BIN (AA-BIN)
  202. NET.TUXEE.PATHS (PATHS)
  203. NET.TUXEE.VECTORS (VECTORS)
  204. ORG.MAPCAR.PARSE-NUMBER (PARSE-NUMBER)
  205. OSICAT
  206. OSICAT-SYSTEM
  207. PARENSCRIPT (PS JS)
  208. PARENSCRIPT.SYSTEM
  209. PARSE-NUMBER-SYSTEM
  210. PORTABLE-THREADS
  211. PORTABLE-THREADS-SYSTEM
  212. PREGEXP
  213. PRIMORDIAL
  214. PURI (NET.URI)
  215. PURI-SYSTEM
  216. REDSHANK (CLEE)
  217. REGRESSION-TEST (RT RTEST)
  218. RFC2388
  219. RFC2388.SYSTEM
  220. RUNE-DOM (CXML-DOM)
  221. RUNES
  222. RUNES-ENCODING
  223. S-SERIALIZATION
  224. S-SYSDEPS
  225. S-XML
  226. SALZA2
  227. SAX
  228. SB-ACLREPL
  229. SB-ACLREPL-SYSTEM
  230. SB-ALIEN (SB-C-CALL)
  231. SB-ALIEN-INTERNALS
  232. SB-ASSEM
  233. SB-BIGNUM
  234. SB-BSD-SOCKETS
  235. SB-BSD-SOCKETS-INTERNAL (SOCKINT)
  236. SB-BSD-SOCKETS-SYSTEM
  237. SB-C
  238. SB-CLTL2
  239. SB-CLTL2-SYSTEM
  240. SB-DEBUG
  241. SB-DI
  242. SB-DISASSEM
  243. SB-EVAL
  244. SB-EXECUTABLE
  245. SB-EXT
  246. SB-FASL
  247. SB-FORMAT
  248. SB-GRAY
  249. SB-GROVEL
  250. SB-GROVEL-SYSTEM
  251. SB-IMPL
  252. SB-INT
  253. SB-INTROSPECT
  254. SB-INTROSPECT-SYSTEM
  255. SB-KERNEL
  256. SB-LOOP
  257. SB-MD5
  258. SB-MD5-SYSTEM
  259. SB-MOP
  260. SB-PCL
  261. SB-POSIX
  262. SB-POSIX-SYSTEM
  263. SB-PRETTY
  264. SB-PROFILE
  265. SB-ROTATE-BYTE
  266. SB-ROTATE-BYTE-SYSTEM
  267. SB-RT
  268. SB-RT-SYSTEM
  269. SB-SEQUENCE (SEQUENCE)
  270. SB-SIMPLE-STREAM-SYSTEM
  271. SB-SIMPLE-STREAMS
  272. SB-SPROF
  273. SB-SYS
  274. SB-THREAD
  275. SB-UNIX
  276. SB-VM
  277. SB-WALKER
  278. SCREAMER
  279. SCREAMER-SYSTEM
  280. SCREAMER-USER
  281. SCREAMS
  282. SERIES
  283. SERIES-SYSTEM
  284. SGML
  285. SPLIT-SEQUENCE (PARTITION)
  286. SPLIT-SEQUENCE-SYSTEM
  287. SRFI.SETAGAYA.MC (SRFI)
  288. STANDARD-CL (STD)
  289. SWANK
  290. SWANK-BACKEND
  291. SWANK-IO-PACKAGE
  292. SWANK-LOADER
  293. SWANK-MATCH
  294. SWANK-MOP
  295. TAO-COMPAT-ASD
  296. TAO-COMPAT.SETAGAYA.MC (TAO-COMPAT)
  297. TOADSTOOL
  298. TOADSTOOL-IMPL
  299. TOADSTOOL-SYSTEM
  300. TOADSTOOL-UTILS
  301. TRIVIAL-GARBAGE (TG)
  302. TRIVIAL-GRAY-STREAMS
  303. TRIVIAL-GRAY-STREAMS-SYSTEM
  304. UFFI
  305. UFFI-SYSTEM
  306. URL-REWRITE
  307. USOCKET
  308. USOCKET-SYSTEM
  309. UTF8-RUNES
  310. VECTO
  311. XLIB
  312. XML (XML)
  313. XMLCONF
  314. XPATH
  315. XPATH-PROTOCOL
  316. XPATH-SYS
  317. XPATH.SYSTEM
  318. XPATTERN
  319. XYZZY-COMPAT (XYZZY)
  320. XYZZY-COMPAT-ASD
  321. YACC
  322. ZL
  323. ZPB-TTF
  324. ZPB-TTF-SYSTEM
  325. ZPNG

ゲスト



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