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-02-24

今日の発見 2

| 01:00 | 今日の発見 2 - わだばLisperになる を含むブックマーク はてなブックマーク - 今日の発見 2 - わだばLisperになる

前回キーワードに関数を付けてみましたが、他の定数はどうなんだろうということで試してみました。

(defun t (n) n)

(t 3)
;=> 3

なるほど、パッケージロックの警告を貰いますが、破ればOKみたいです。

(defun nil (n) n)

(nil 3) ;=> 3

なるほど、なるほど。

nilは警告がでないのはどうしてでしょう。*1

(() 3) ;=> 3

これはwww

(setf (symbol-function ()) #'funcall)

(() ((lambda (f) (lambda (n) (() f f n)))
     (lambda (f n)
       (if (zerop n)
           1
           (* n (() f f (- n 1))))))
 10)
;=> 3628800
((#|関数名の内部にコメントが書けるのは画期的|#) '+ 3 3)
;=> 6

*1:Tを定義したときにロックを破っていたようです