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 |

2007-04-25

CADRでSICP 1.5

| 20:03 | CADRでSICP 1.5 - わだばLisperになる を含むブックマーク はてなブックマーク - CADRでSICP 1.5 - わだばLisperになる

CADRでSICP Exercise 1.5.に挑戦 - Structure and Interpretation of Computer Programs

Exercise 1.5
(defun p ()
  (p))

(defun test (x y)
  (if (= x 0)
      0
    (if (functionp y)
	(funcall y)
      y)))
とした場合、
(test 0 #'p)
の評価が正規順序の評価と、作用的順序の評価でどう違っ
てくるかを説明せよ。
解答
正規順序だと、(p)が実行されることになるので、無限
ループになるんではなかろうか。ということで、(p)の
評価が終らず結果が出せない。
ちなみにCADRでは、PDL Overflowになる。
作用的順序だと、(p)は評価する必要がないので0が返さ
れ終了する。