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-07-14

.7

| 10:43 | .7 - わだばLisperになる を含むブックマーク はてなブックマーク - .7 - わだばLisperになる

日課練習的に毎日作っていきたいところ。

SRFI-1のfoldを作ってみた。

開発環境: Slime/SBCL Linux

(defun fold (kons knil &rest clists)
  (do ((ls clists (mapcar #'cdr ls))
       (r knil (apply kons `(,@(mapcar #'car ls) ,r))))
      ((some #'endp ls) r)))

(defun fold (kons knil &rest clists)
  (prog (r)
        (setq r knil)
    l   (cond ((some #'endp clists) (return r)))
	(setq r (apply kons `(,@(mapcar #'car clists) ,r)))
	(setq clists (mapcar #'cdr clists))
	(go l)))

(defun fold (kons knil &rest clists)
  (labels ((frob (kons knil clists)
	     (if (some #'endp clists)
		 knil
		 (frob kons 
		       (apply kons `(,@(mapcar #'car clists) ,knil)) 
		       (mapcar #'cdr clists)))))
    (frob kons knil clists)))