本帖最后由 老刘1号 于 2024-3-16 21:52 编辑
《函数程序设计算法》读书笔记。
简单值
算术函数
Lambda 表达式- (lambda (x y)
- (/ (+ x y) 2))
复制代码- ((lambda (x y)
- (/ (+ x y) 2)) 3/5 11/3)
复制代码
变元过程- (lambda nums
- (/ (apply + nums) (apply * nums)))
复制代码- ((lambda nums
- (/ (apply + nums) (apply * nums))) 3 5 8 2 6)
复制代码- (lambda nums
- (apply + 23 14 6 nums))
复制代码- ((lambda (x y z . others)
- (* (+ x y z) (apply + others))) 1 2 3 3 4 5)
复制代码
构造列表
返回多个值- (lambda nums
- (values (apply + nums) (apply * nums)))
复制代码- ((lambda nums
- (values (apply + nums) (apply * nums))) 1 2 3 4 5)
复制代码- (define delist (lambda (ls)
- (apply values ls)))
复制代码- (delist (list 1 2 3 4 5))
复制代码
谓词- (procedure? (lambda (x) (+ x 1)))
复制代码- (equal? (lambda (x) x) (lambda (x) x))
复制代码- (values zero? positive? negative? even? odd?)
复制代码
条件类型表达式- (if (= (+ 1 1) 2) 'eq 'neq)
复制代码- (if (= (+ 1 1) 3) 'eq 'neq)
复制代码
定义- (define inches-in-a-mile (* 12 5280))
复制代码- (define (arithmetic-mean x y)
- (/ (+ x y) 2))
复制代码- (define lesser (lambda (l r)
- (if (< l r) l r)))
复制代码- (define (multi-arg . args) args)
复制代码- (define (multi-arg2 x y . args) (values (+ x y) args))
复制代码- (define (factorial n)
- (if (= n 0)
- 1
- (* n (factorial (- n 1)))))
复制代码
局部绑定- (let ((hours-in-a-day 24)
- (seconds-in-an-hour (* 60 60)))
- (* hours-in-a-day seconds-in-an-hour))
复制代码- (let ((double (lambda (x) (* x 2))))
- (* (double 7) (double 12)))
复制代码 |