码迷,mamicode.com
首页 > 其他好文 > 详细

全民Scheme(2):来自星星的你

时间:2017-04-16 22:56:55      阅读:265      评论:0      收藏:0      [点我收藏+]

标签:ora   new   不能   bsp   member   content   scheme   lis   sub   


一门编程语言,假设不能对你思考编程的方式产生影响。就不值得去学习。——  Alan Perlis

(define rember*
  (lambda (a list)
    (cond
      ((null? list) ‘())
      ((atom? (car list)) (cond 
                      ((eq? a (car list)) (rember* a (cdr list)))
                      (else (cons (car list) (rember* a (cdr list))))))
      (else (cons (rember* a (car list)) (rember* a (cdr list)))))))


(rember* ‘cup ‘((coffee) cup ((tea) cup) (and (hick)) cup))

(define insertR*
  (lambda (new old l)
    (cond
      ((null? l) ‘())
      ((atom?

(car l)) (cond
                         ((eq?

(car l) old) (cons old (cons new (cdr l))))
                         (else (cons (car l) (insertR* new old (cdr l))))))
      (else (cons (insertR* new old (car l)) (insertR* new old (cdr l)))))))

(insertR* ‘roast ‘chuck ‘((how much (wood))
                          could
                          ((a (wood) chuck))
                          (((chuck)))
                          (if (a) ((wood chuck)))
                          could chuck wood))

(define occur*
  (lambda (a l)
    (cond
      ((null?

l) 0)
      ((atom?

(car l)) (cond ((eq? a (car l)) (+ 1 (occur* a (cdr l))))
                             (else (occur* a (cdr l)))))
      (else (+ (occur* a (car l)) (occur* a (cdr l)))))))

(occur* ‘banana ‘((banana) (split ((((banana ice)))
                                   (cream (banana))
                                   sherbet))
                           (banana)
                           (bread)
                           (banana brandy)))
(define subst*
  (lambda (new old l)
    (cond
      ((null? l) ‘())
      ((atom? (car l)) (cond
                         ((eq? old (car l)) (cons new (subst* new old (cdr l))))
                         (else (cons (car l) (subst* new old (cdr l))))))
      (else (cons (subst* new old (car l)) (subst* new old (cdr l)))))))
(subst* ‘orange ‘banana ‘((banana) (split ((((banana ice)))
                                   (cream (banana))
                                   sherbet))
                           (banana)
                           (bread)
                           (banana brandy)))

(define insertL*
  (lambda (new old l)
    (cond
      ((null? l) ‘())
      ((atom?

(car l)) (cond
                        ((eq?

old (car l)) (cons new (cons old (insertL* new old (cdr l)))))
                        (else (cons (car l) (insertL* new old (cdr l))))
                        ))
      (else (cons (insertL* new old (car l)) (insertL* new old (cdr l)))))))

(insertL* ‘pecker ‘chuck ‘((how much (wood))
                           could
                           ((a (wood) chuck))
                           (((chunck)))
                           (if (a) ((wood chuck)))
                           (could chuck wood)))

(define member*
  (lambda (a l)
    (cond
      ((null? l) #f)
      ((atom? (car l)) (cond
                         ((eq?

(car l) a) #t)
                         (else (member* a (cdr l)))))
      (else (or (member* a (car l))
                (member* a (cdr l)))))))

(member* ‘chips ‘((potato) (chips ((with) fish)(chips)))) 

全民Scheme(2):来自星星的你

标签:ora   new   不能   bsp   member   content   scheme   lis   sub   

原文地址:http://www.cnblogs.com/mfmdaoyou/p/6720060.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!