Basic Werk | Memo | Contact


MEMOMEM

Little_Schemer_02



Scheme 手習い 練習帳。



;; Page 46 ~ 48 ;; ネストしたリストの car を集める (define (firsts lst) (cond ((null? lst) '()) (else (cons (cond ((atom? (car lst)) (car lst)) ((pair? (car lst)) (car (car lst))) (else '())) (firsts (cdr lst))))))
(firsts '((a b) (c d) (e f))) ;; -> (a b c)
;; ただし、 ;; ((pair? (car lst)) (car (car lst))) ;; となってる部分のため、こんなリストを渡すと (firsts '((a b) (c d) (e (V X) f) (((s h) n) l))) ;; -> (a c e ((s h) n))
;; どんなにネストしても最初のアトムを取ってきたいなら (define (first-atoms lst) (cond ((null? lst) '()) (else (cons (cond ((atom? (car lst)) (car lst)) ((pair? (car lst)) (car (first-atoms (car lst)))) (else '())) (first-atoms (cdr lst))))))
(first-atoms '((a b) (c d) (e (V X) f) (((s h) n) l))) ;; -> (a c e s)


#Scheme #Gauche #Lisp



SN 2013/07/02 21:41:34

Archives > Little_Schemer_02.html







MEMOMEM



More Contents

Basic Werk | Previous Blog

仕事と日 | 中村 心