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-08-12

ELIS復活祭メモ(3) TAOではマクロがFUNCALL/APPLYできる

| 21:56 | ELIS復活祭メモ(3) TAOではマクロがFUNCALL/APPLYできる - わだばLisperになる を含むブックマーク はてなブックマーク - ELIS復活祭メモ(3) TAOではマクロがFUNCALL/APPLYできる - わだばLisperになる

TAOマクロがFUNCALL/APPLYできるというのをbitのTAOの連載(no title)を読んで知ったので、やはりこれを試さずにはいられません。

ということで、

(mapcar 'and '(1 2 3 4))
;⇒ (1 2 3 4)

(mapcar 'progn '(1 2 3 4))
;⇒ (1 2 3 4)

(apply 'dotimes '((i 8) (print i)))
;->
0 
1 
2 
3 
4 
5 
6 
7

のようなものを実行して喜んでおりました。

mapcarについては、確認するのを忘れてしまったのですが、複数のリストが取れるので

;; 多分
(mapcar 'and
        '(nil t nil t)
        '(1 2 3 4))
;⇒ (nil 2 nil 4)

のようなことができるのではないかと思います。

TAOでは、mapcarにandを渡したいのにできない!というLISP初心者のFAQも問題にならないわけですね。

mapcarにandを渡していたところ天海さんにandはマイクロ(コード)で実装されているということを教えて頂きました。

andのソースを開く際に、M-.のような感じで、マイクロコードのソースに飛んでいたように思います。

このマイクロコードも色々いじれたりするんでしょうか。次にTAOについて伺える機会があれば伺ってみたいです。