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-06-28


.5

| 23:05 | .5 - わだばLisperになる を含むブックマーク はてなブックマーク - .5 - わだばLisperになる

鬱気味で、何もする気が起きない。

...けど、他にすることもなさ過ぎるので、引き続き

レトロに風味でSRFI-1の関数を作ろう。作ろう。

;; LIST-REF
(DEFUN LIST-REF (CLIST I)
  (IF (OR (MINUSP I) (> I (LENGTH CLIST)))
      (ERROR "ERROR: ARGUMENT OUT OF RANGE: ~A" I)
    (NTH I CLIST)))

;; TAKE
(DEFUN TAKE (LIST INDEX)
  (PROG (L R CNT)
        (SETQ L LIST)
        (SETQ CNT INDEX)
     L  (COND ((OR (ENDP L) (>= 0 CNT)) (RETURN (NREVERSE R))))
        (PUSH (POP L) R)
        (DECF CNT)
        (GO L)))

;; DROP
(DEFUN DROP (LIST INDEX)
  (PROG (L CNT)
        (SETQ L LIST)
        (SETQ CNT INDEX)
      L (COND ((OR (ENDP L) (>= 0 CNT)) (RETURN L)))
        (POP L)
        (DECF CNT)
        (GO L)))

;;(DEFUN DROP (LIST INDEX)
;;  (NTHCDR INDEX LIST))

;; SPLIT-AT
(DEFUN SPLIT-AT (LIST INDEX)
  (PROG (L R CNT)
        (SETQ L LIST)
        (SETQ CNT INDEX)
      L (COND ((OR (ENDP L) (>= 0 CNT)) 
               (RETURN (VALUES (NREVERSE R) L))))
        (PUSH (POP L) R)
        (DECF CNT)
        (GO L)))

ゲスト



トラックバック - http://cadr.g.hatena.ne.jp/g000001/20070628