(defun groupbykey
( lst
/ tmp rtn
) )
)
rtn
)
;; (setq l '((0 1 2) (1 2 3) (2 3 4)))
;; (groupbykey l) => ((0 (1 2)) (1 (2 3)) (2 (3 4)))
;; (setq l '((0 1 2 3) (0 1 2 3 4) (0 1 2 3 4 5)))
;; (groupbykey l) => ((0 (1 2 3) (1 2 3 4) (1 2 3 4 5)))
;; (setq l '((0 1 2 3) (0 1 2 3 4) (0 1 2 3 4 5)))
;; (mapcar '(lambda ( x ) (cons (car x) (groupbykey (cdr x)))) (groupbykey l)) => ((0 (1 (2 3) (2 3 4) (2 3 4 5))))
(defun foo
( lst
/ groupbykey
)
(defun groupbykey
( lst
/ tmp rtn
) )
)
rtn
)
)
)
;; (setq l '((0 1 2 3) (0 1 2 3 4) (0 1 2 3 4 5)))
;; (mapcar '(lambda ( a ) (cons (car a) (groupbykey (cdr a)))) (cddr (mapcar '(lambda ( b ) (cons (car b) (groupbykey (cdr b)))) (cdr (mapcar '(lambda ( c ) (cons (car c) (groupbykey (cdr c)))) (groupbykey l)))))) => nil
;; (setq l '((0)))
;; (foo l) => ((0))
;; (setq l '((0 1 2) (1 2 3) (2 3 4)))
;; (foo l) => ((0 (1 (2))) (1 (2 (3))) (2 (3 (4))))
;; (setq l '((0 1 2 3) (0 1 2 3 4) (0 1 2 3 4 5)))
;; (foo l) => ((0 (1 (2 (3)))))
(defun fooo
( lst
/ groupbykey
)
(defun groupbykey
( lst
/ tmp rtn
) )
)
rtn
)
lst
)
)
;; (setq l '((0)))
;; (fooo l) => ((0))
;; (setq l '((0 1 2) (1 2 3) (2 3 4)))
;; (fooo l) => ((0 1 2) (1 2 3) (2 3 4))
;; (setq l '((0 1 2 3) (0 1 2 3 4) (0 1 2 3 4 5)))
;; (fooo l) => ((0 (1 (2 (3 (nil nil) (4 nil (5)))))))
;; testing list over 3 levels deep :
("SubGroup 0" "Class 00" "SubClass 000" "000 DescriptionA" "000 DescriptionB" "000 Measure")
("SubGroup 0" "Class 00" "SubClass 000" "001 DescriptionA" "001 DescriptionB" "001 Measure")
("SubGroup 0" "Class 00" "SubClass 000" "002 DescriptionA" "002 DescriptionB" "002 Measure")
("SubGroup 0" "Class 01" "SubClass 010" "010 DescriptionA" "010 DescriptionB" "010 Measure")
("SubGroup 0" "Class 01" "SubClass 010" "011 DescriptionA" "011 DescriptionB" "011 Measure")
("SubGroup 0" "Class 01" "SubClass 010" "012 DescriptionA" "012 DescriptionB" "012 Measure")
("SubGroup 0" "Class 02" "SubClass 020" "020 DescriptionA" "020 DescriptionB" "020 Measure")
("SubGroup 0" "Class 02" "SubClass 020" "021 DescriptionA" "021 DescriptionB" "021 Measure")
("SubGroup 0" "Class 02" "SubClass 020" "022 DescriptionA" "022 DescriptionB" "022 Measure")
("SubGroup 1" "Class 10" "SubClass 100" "100 DescriptionA" "100 DescriptionB" "100 Measure")
("SubGroup 1" "Class 10" "SubClass 100" "101 DescriptionA" "101 DescriptionB" "101 Measure")
("SubGroup 1" "Class 10" "SubClass 100" "102 DescriptionA" "102 DescriptionB" "102 Measure")
("SubGroup 1" "Class 11" "SubClass 110" "110 DescriptionA" "110 DescriptionB" "110 Measure")
("SubGroup 1" "Class 11" "SubClass 110" "111 DescriptionA" "111 DescriptionB" "111 Measure")
("SubGroup 1" "Class 11" "SubClass 110" "112 DescriptionA" "112 DescriptionB" "112 Measure")
("SubGroup 1" "Class 12" "SubClass 120" "120 DescriptionA" "120 DescriptionB" "120 Measure")
("SubGroup 1" "Class 12" "SubClass 120" "121 DescriptionA" "121 DescriptionB" "121 Measure")
("SubGroup 1" "Class 12" "SubClass 120" "122 DescriptionA" "122 DescriptionB" "122 Measure")
("SubGroup 2" "Class 20" "SubClass 200" "200 DescriptionA" "200 DescriptionB" "200 Measure")
("SubGroup 2" "Class 20" "SubClass 200" "201 DescriptionA" "201 DescriptionB" "201 Measure")
("SubGroup 2" "Class 20" "SubClass 200" "202 DescriptionA" "202 DescriptionB" "202 Measure")
("SubGroup 2" "Class 21" "SubClass 210" "210 DescriptionA" "210 DescriptionB" "210 Measure")
("SubGroup 2" "Class 21" "SubClass 210" "211 DescriptionA" "211 DescriptionB" "211 Measure")
("SubGroup 2" "Class 21" "SubClass 210" "212 DescriptionA" "212 DescriptionB" "212 Measure")
("SubGroup 2" "Class 22" "SubClass 220" "220 DescriptionA" "220 DescriptionB" "220 Measure")
("SubGroup 2" "Class 22" "SubClass 220" "221 DescriptionA" "221 DescriptionB" "221 Measure")
("SubGroup 2" "Class 22" "SubClass 220" "222 DescriptionA" "222 DescriptionB" "222 Measure")
))
;; (foo In_List) => Out_List
;| Out_List
(("SubGroup 0" ("Class 00" ("SubClass 000" ("000 DescriptionA" ("000 DescriptionB" ("000 Measure"))) ("001 DescriptionA" ("001 DescriptionB" ("001 Measure"))) ("002 DescriptionA" ("002 DescriptionB" ("002 Measure"))))) ("Class 01" ("SubClass 010" ("010 DescriptionA" ("010 DescriptionB" ("010 Measure"))) ("011 DescriptionA" ("011 DescriptionB" ("011 Measure"))) ("012 DescriptionA" ("012 DescriptionB" ("012 Measure"))))) ("Class 02" ("SubClass 020" ("020 DescriptionA" ("020 DescriptionB" ("020 Measure"))) ("021 DescriptionA" ("021 DescriptionB" ("021 Measure"))) ("022 DescriptionA" ("022 DescriptionB" ("022 Measure")))))) ("SubGroup 1" ("Class 10" ("SubClass 100" ("100 DescriptionA" ("100 DescriptionB" ("100 Measure"))) ("101 DescriptionA" ("101 DescriptionB" ("101 Measure"))) ("102 DescriptionA" ("102 DescriptionB" ("102 Measure"))))) ("Class 11" ("SubClass 110" ("110 DescriptionA" ("110 DescriptionB" ("110 Measure"))) ("111 DescriptionA" ("111 DescriptionB" ("111 Measure"))) ("112 DescriptionA" ("112 DescriptionB" ("112 Measure"))))) ("Class 12" ("SubClass 120" ("120 DescriptionA" ("120 DescriptionB" ("120 Measure"))) ("121 DescriptionA" ("121 DescriptionB" ("121 Measure"))) ("122 DescriptionA" ("122 DescriptionB" ("122 Measure")))))) ("SubGroup 2" ("Class 20" ("SubClass 200" ("200 DescriptionA" ("200 DescriptionB" ("200 Measure"))) ("201 DescriptionA" ("201 DescriptionB" ("201 Measure"))) ("202 DescriptionA" ("202 DescriptionB" ("202 Measure"))))) ("Class 21" ("SubClass 210" ("210 DescriptionA" ("210 DescriptionB" ("210 Measure"))) ("211 DescriptionA" ("211 DescriptionB" ("211 Measure"))) ("212 DescriptionA" ("212 DescriptionB" ("212 Measure"))))) ("Class 22" ("SubClass 220" ("220 DescriptionA" ("220 DescriptionB" ("220 Measure"))) ("221 DescriptionA" ("221 DescriptionB" ("221 Measure"))) ("222 DescriptionA" ("222 DescriptionB" ("222 Measure")))))))
( ("SubGroup 0"
("Class 00"
("SubClass 000"
("000 DescriptionA" ("000 DescriptionB" ("000 Measure")))
("001 DescriptionA" ("001 DescriptionB" ("001 Measure")))
("002 DescriptionA" ("002 DescriptionB" ("002 Measure")))
)
)
("Class 01"
("SubClass 010"
("010 DescriptionA" ("010 DescriptionB" ("010 Measure")))
("011 DescriptionA" ("011 DescriptionB" ("011 Measure")))
("012 DescriptionA" ("012 DescriptionB" ("012 Measure")))
)
)
("Class 02"
("SubClass 020"
("020 DescriptionA" ("020 DescriptionB" ("020 Measure")))
("021 DescriptionA" ("021 DescriptionB" ("021 Measure")))
("022 DescriptionA" ("022 DescriptionB" ("022 Measure")))
)
)
)
("SubGroup 1"
("Class 10"
("SubClass 100"
("100 DescriptionA" ("100 DescriptionB" ("100 Measure")))
("101 DescriptionA" ("101 DescriptionB" ("101 Measure")))
("102 DescriptionA" ("102 DescriptionB" ("102 Measure")))
)
)
("Class 11"
("SubClass 110"
("110 DescriptionA" ("110 DescriptionB" ("110 Measure")))
("111 DescriptionA" ("111 DescriptionB" ("111 Measure")))
("112 DescriptionA" ("112 DescriptionB" ("112 Measure")))
)
)
("Class 12"
("SubClass 120"
("120 DescriptionA" ("120 DescriptionB" ("120 Measure")))
("121 DescriptionA" ("121 DescriptionB" ("121 Measure")))
("122 DescriptionA" ("122 DescriptionB" ("122 Measure")))
)
)
)
("SubGroup 2"
("Class 20"
("SubClass 200"
("200 DescriptionA" ("200 DescriptionB" ("200 Measure")))
("201 DescriptionA" ("201 DescriptionB" ("201 Measure")))
("202 DescriptionA" ("202 DescriptionB" ("202 Measure")))
)
)
("Class 21"
("SubClass 210"
("210 DescriptionA" ("210 DescriptionB" ("210 Measure")))
("211 DescriptionA" ("211 DescriptionB" ("211 Measure")))
("212 DescriptionA" ("212 DescriptionB" ("212 Measure")))
)
)
("Class 22"
("SubClass 220"
("220 DescriptionA" ("220 DescriptionB" ("220 Measure")))
("221 DescriptionA" ("221 DescriptionB" ("221 Measure")))
("222 DescriptionA" ("222 DescriptionB" ("222 Measure")))
)
)
)
)
|;
;; (fooo In_List) => Out_List
;| Out_List
(("SubGroup 0" ("Class 00" ("SubClass 000" ("000 DescriptionA" "000 DescriptionB" "000 Measure") ("001 DescriptionA" "001 DescriptionB" "001 Measure") ("002 DescriptionA" "002 DescriptionB" "002 Measure"))) ("Class 01" ("SubClass 010" ("010 DescriptionA" "010 DescriptionB" "010 Measure") ("011 DescriptionA" "011 DescriptionB" "011 Measure") ("012 DescriptionA" "012 DescriptionB" "012 Measure"))) ("Class 02" ("SubClass 020" ("020 DescriptionA" "020 DescriptionB" "020 Measure") ("021 DescriptionA" "021 DescriptionB" "021 Measure") ("022 DescriptionA" "022 DescriptionB" "022 Measure")))) ("SubGroup 1" ("Class 10" ("SubClass 100" ("100 DescriptionA" "100 DescriptionB" "100 Measure") ("101 DescriptionA" "101 DescriptionB" "101 Measure") ("102 DescriptionA" "102 DescriptionB" "102 Measure"))) ("Class 11" ("SubClass 110" ("110 DescriptionA" "110 DescriptionB" "110 Measure") ("111 DescriptionA" "111 DescriptionB" "111 Measure") ("112 DescriptionA" "112 DescriptionB" "112 Measure"))) ("Class 12" ("SubClass 120" ("120 DescriptionA" "120 DescriptionB" "120 Measure") ("121 DescriptionA" "121 DescriptionB" "121 Measure") ("122 DescriptionA" "122 DescriptionB" "122 Measure")))) ("SubGroup 2" ("Class 20" ("SubClass 200" ("200 DescriptionA" "200 DescriptionB" "200 Measure") ("201 DescriptionA" "201 DescriptionB" "201 Measure") ("202 DescriptionA" "202 DescriptionB" "202 Measure"))) ("Class 21" ("SubClass 210" ("210 DescriptionA" "210 DescriptionB" "210 Measure") ("211 DescriptionA" "211 DescriptionB" "211 Measure") ("212 DescriptionA" "212 DescriptionB" "212 Measure"))) ("Class 22" ("SubClass 220" ("220 DescriptionA" "220 DescriptionB" "220 Measure") ("221 DescriptionA" "221 DescriptionB" "221 Measure") ("222 DescriptionA" "222 DescriptionB" "222 Measure")))))
( ("SubGroup 0"
("Class 00"
("SubClass 000"
("000 DescriptionA" "000 DescriptionB" "000 Measure")
("001 DescriptionA" "001 DescriptionB" "001 Measure")
("002 DescriptionA" "002 DescriptionB" "002 Measure")
)
)
("Class 01"
("SubClass 010"
("010 DescriptionA" "010 DescriptionB" "010 Measure")
("011 DescriptionA" "011 DescriptionB" "011 Measure")
("012 DescriptionA" "012 DescriptionB" "012 Measure")
)
)
("Class 02"
("SubClass 020"
("020 DescriptionA" "020 DescriptionB" "020 Measure")
("021 DescriptionA" "021 DescriptionB" "021 Measure")
("022 DescriptionA" "022 DescriptionB" "022 Measure")
)
)
)
("SubGroup 1"
("Class 10"
("SubClass 100"
("100 DescriptionA" "100 DescriptionB" "100 Measure")
("101 DescriptionA" "101 DescriptionB" "101 Measure")
("102 DescriptionA" "102 DescriptionB" "102 Measure")
)
)
("Class 11"
("SubClass 110"
("110 DescriptionA" "110 DescriptionB" "110 Measure")
("111 DescriptionA" "111 DescriptionB" "111 Measure")
("112 DescriptionA" "112 DescriptionB" "112 Measure")
)
)
("Class 12"
("SubClass 120"
("120 DescriptionA" "120 DescriptionB" "120 Measure")
("121 DescriptionA" "121 DescriptionB" "121 Measure")
("122 DescriptionA" "122 DescriptionB" "122 Measure")
)
)
)
("SubGroup 2"
("Class 20"
("SubClass 200"
("200 DescriptionA" "200 DescriptionB" "200 Measure")
("201 DescriptionA" "201 DescriptionB" "201 Measure")
("202 DescriptionA" "202 DescriptionB" "202 Measure")
)
)
("Class 21"
("SubClass 210"
("210 DescriptionA" "210 DescriptionB" "210 Measure")
("211 DescriptionA" "211 DescriptionB" "211 Measure")
("212 DescriptionA" "212 DescriptionB" "212 Measure")
)
)
("Class 22"
("SubClass 220"
("220 DescriptionA" "220 DescriptionB" "220 Measure")
("221 DescriptionA" "221 DescriptionB" "221 Measure")
("222 DescriptionA" "222 DescriptionB" "222 Measure")
)
)
)
)
|;