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

AUTO-IMPORT

| 22:33 | AUTO-IMPORT - わだばLisperになる を含むブックマーク はてなブックマーク - AUTO-IMPORT - わだばLisperになる

GITHUB-INSTALL便利だし紹介したい!と思って前回のエントリーを書いたのですが、前々回に既に紹介してましたw

あんまりなので、同じく昨日位に作ってみたAUTO-IMPORTを紹介してみます。

TAO/SILENTの論文を読んでパッケージ・パスというアイデアが便利そうだったので、中途半端に真似てみました。

もっと本格的に真似られれば結構便利な気がしますが、下記のコードくらいでも普段の作業では割と便利です。

(DEFPARAMETER *PACKAGE-PATH* 
  (LIST :SHIBUYA.LISP 
        :FARE-UTILS 
        :ALEXANDRIA
        :MYCL-UTIL
        :KMRCL
        :METATILITIES
        ))

(DEFUN AUTO-IMPORT (NAME &AUX ANS)
  (DOLIST (PKG (REVERSE *PACKAGE-PATH*))
    (WHEN (AND (FIND-PACKAGE PKG)
               (FIND-SYMBOL (STRING NAME) PKG))
      (LET ((SYM (INTERN (STRING NAME) PKG)))
        (SHADOWING-IMPORT SYM)
        (PUSH PKG ANS))))
  ANS)
;; FLATTENが欲しい
(AUTO-IMPORT :FLATTEN)
;⇒ (:SHIBUYA.LISP :ALEXANDRIA :MYCL-UTIL :KMRCL)

(FLATTEN '(1 2 3 4 5 (1 2 (3 (4 ((((5)6))))))))
;⇒ (1 2 3 4 5 1 2 3 4 5 6)

(SYMBOL-PACKAGE 'FLATTEN)
;⇒ #<PACKAGE "SHIBUYA.LISP">