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 |

2008-05-15

LISP1.5でL-99 (P07 リストの平坦化)

| 02:16 | LISP1.5でL-99 (P07 リストの平坦化) - わだばLisperになる を含むブックマーク はてなブックマーク - LISP1.5でL-99 (P07 リストの平坦化) - わだばLisperになる

LISTPがないので自作。NILは空リストということで削除する方針で作成。

; FUNCTION   EVALQUOTE   HAS BEEN ENTERED, ARGUMENTS..
;FLATTEN
;
;((0 (1 ((((2 (((((3 (((4)))))))) 5))))) (6 (7 8) 9)))
;
;END OF EVALQUOTE, VALUE IS ..
;(0 1 2 3 4 5 6 7 8 9)

DEFINE((
(LISTP (LAMBDA (LST)
         (OR (NULL LST) (NOT (ATOM LST)))))

(FLATTEN (LAMBDA (LST)
           (COND ((NULL LST) () )
                 ((LISTP (CAR LST)) 
                  (APPEND (FLATTEN (CAR LST)) (FLATTEN (CDR LST))))
                 (T (CONS (CAR LST) (FLATTEN (CDR LST)))))))
))