schemeで全dataを+するのを知りたいです、か?
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1347295398
とりあえず仕様を満たすものをガガッと力任せに書いてみた。
(define (mysum lst) (define (iter lst) (if (null? lst) 0 (let ((head (car lst)) (tail (cdr lst))) (+ (iter tail) (if (number? head) head (iter head)))))) (if (list? lst) (iter lst) (error))) (define (mytrans lst) (define (iter lst) (if (null? lst) '() (let ((head (car lst)) (tail (cdr lst))) (if (number? head) (cons (alpha head) (iter tail)) (cons (iter head) (iter tail)))))) (define (alpha n) (cond ((= n 1) 'one) ((= n 2) 'two) ((= n 3) 'three) ((= n 4) 'four) ((= n 5) 'five) ((= n 6) 'six) ((= n 7) 'seven) ((= n 8) 'eight) ((= n 9) 'nine))) (cond ((number? lst)(error)) ((null? lst) 0) (else (iter lst)))) (define (myfind lst n) (let ((result (assoc n lst))) (if result (cadr result) #f)))
【追記】
もっとかっちょいいのを書いてくれてる
→ http://d.hatena.ne.jp/trotr/20100921/1285082372
valvallowさんの抽象化バージョン
→ http://valvallow.blogspot.com/2010/09/re-schemedata.html