Chinaunix首页 | 论坛 | 博客
  • 博客访问: 249494
  • 博文数量: 49
  • 博客积分: 110
  • 博客等级: 民兵
  • 技术积分: 510
  • 用 户 组: 普通用户
  • 注册时间: 2013-01-13 00:59
个人简介

make it run,make it better,make it fast. https://github.com/liulanghaitun

文章分类

全部博文(49)

文章存档

2023年(1)

2022年(2)

2020年(4)

2019年(4)

2017年(15)

2016年(3)

2014年(3)

2013年(14)

分类: LINUX

2020-09-15 08:42:53

(define member-
  (lambda(elem ls)
    (cond
      ((null? ls) #f)
      ((eq? elem (car ls)) #t)
      (else (member- elem (cdr ls))))))

cps变换:
(define lot
  (lambda(ls)
    (not (null? ls))))

(define member&
  (lambda (elem ls cont)
    (cond
      ((null? ls) (cont '()))
      ((eq? elem (car ls)) (member& elem (cdr ls) (lambda (res) (cont (cons elem res)))))
      (else (member& elem (cdr ls) (lambda (res) (cont res)))))))

cps变换:
(define member-cps
    (lambda(elem ls k)
      (cond
        ((null? ls) (k #f))
        ((eq? elem (car ls)) (k #t))
        (else (member-cps elem (cdr ls) k)))))
(member-cps 'a '(b c a) display) 返回 #t
=======================================================================================
(define lat?
  (lambda (ls)
    (cond
      ((null? ls) #t)
      ((atom? (car ls)) (lat? (cdr ls)))
      (else #f))))
cps变换:
(define  col
  (lambda (ls)
    (null? ls)))


(define lat?&co
  (lambda (ls cont)
    (cond
    ((null? ls) (cont '()))
    ((atom? (car ls)) (lat?&co (cdr ls) (lambda (res) (cont res))))
    (else (lat?&co (cdr ls) (lambda (res) (cont (cons (car ls) res))))))))
======================================================================================
(define fact
  (lambda (num)
    (cond
      ((zero? num) 1)
      (else (* num (fact (- num 1)))))))
cps变换:
(define col
  (lambda (num)
    (display num)))

(define fact&co
  (lambda (num col)
    (cond
      ((zero? num) (col 1))
      (else (fact&co (- num 1) (lambda (res) (col (*  num res))))))))

测试:
(member- 1 '(3 4 6 8 9))  返回#f
(member- 1 '(3 4 6 8 9 1)) 返回#t
(member& 1 '(3 4 6 8 9) lot)  返回#f
(member& 1 '(3 4 6 8 9 1) lot)  返回#t
(lat?&co '(1 2 (3) 4) col)  返回#f
(lat?&co '(1 2 3 4) col)  返回#t
(fact 4) 返回24
(fact&co 4 col) 返回24
阅读(1026) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~