ASAHIネット(http://www.asahi-net.or.jp)のjouwa/salonからホットコーナー(http://www.asahi-net.or.jp/~ki4s-nkmr/ )に転載したものから。
---
[URL]
JavaScript 1.7
で、「Generatorは、Lispだと遅延評価の無限リストでやるでしょうね」など
と書いたけど、こんな例なら、そんな大げさなことしなくていいですよね。
クロージャだけですませてみると。
--- ここから --- (defun make-fib-gen () "Fibonacci number generator." (let ((i 0) (j 1) (temp 0)) #'(lambda () ;(format t "i = ~A, j = ~A~%" i j) (setf temp i) (setf i j) (incf j temp) i))) (let ((fib-gen (make-fib-gen))) (print (funcall fib-gen)) ; ==> 1 (print (funcall fib-gen)) ; ==> 1 (print (funcall fib-gen)) ; ==> 2 (print (funcall fib-gen)) ; ==> 3 ) --- ここまで ---
なんか、インデントがなくなって、読みにくくなったのね。^^;
それで、このエントリだけHTMLで書き直したけど、色が赤になって、やっぱ、みにくいね。
ウェブの
[URL]
の2007/01/09のほうをみてください。
セコメントをする