[2021 spring] CS61A Lab 10 : Scheme

Lab10: https://inst.eecs.berkeley.edu/~cs61a/sp21/lab/lab10/
基本语法: https://www.cnblogs.com/ikventure/p/15033731.html
内置procedure: https://inst.eecs.berkeley.edu/~cs61a/sp21/articles/scheme-builtins/

Q1: Combinations

scm> (if (print 1) (print 2) (print 3)) 
1
2

scm> (* (if (> 3 2) 1 2) (+ 4 5))
9

scm> (define foo (lambda (x y z) (if x y z)))
foo

# 注意 先传入z,再判断x
scm> (foo 1 2 (print 'hi))
hi
2

# 注意 (quote E) yields E itself as the value, without evaluating it as a Scheme expression。
scm> ((lambda (a) (print 'a)) 100)
a

Q2: Over or Under

(define (over-or-under num1 num2) 
    (if (< num1 num2)
        -1
        (if (= num1 num2)
            0
            1)))

Q3: Make Adder

(define (make-adder num) (lambda (x) (+ x num)))

Q4: Compose

(define (composed f g) (lambda (x) (f (g x))))

Q5: Make a List

(define lst (list (list 1) 2 (list 3 4) 5))
posted @ 2021-07-20 15:17  ikventure  阅读(1717)  评论(0编辑  收藏  举报