練習2.5
這道題的意思是有乙個新的cons,其接受兩個引數a、b,並且返回(2^a)*(3^b)。這個比較容易實現了。
(define (cons a b)
(* (expt 2 a) (expt 3 b)))
(cons 2 2)
;value: 36
根據題中的意思,並將其與car和cdr模擬,得知car是要分離出2^a,cdr是要分離出3^b。
(define (car x)
(if (= 0 (remainder x 2))
(+ 1 (car (/ x 2)))
0))(define (cdr x)
(if (= 0 (remainder x 3))
(+ 1 (cdr (/ x 3)))
0))測試一下咯。
(define x (cons 2 2))
;value: x
(car x)
;value: 2
(cdr x)
;value: 2
SICP練習 46 練習2 5
練習2.5 這道題的意思是有乙個新的cons,其接受兩個引數a b,並且返回 2 a 3 b 這個比較容易實現了。define cons a b expt 2 a expt 3 b cons 2 2 value 36 根據題中的意思,並將其與car和cdr模擬,得知car是要分離出2 a,cdr是要...
SICP練習 46 練習2 5
練習2.5 這道題的意思是有乙個新的cons,其接受兩個引數a b,並且返回 2 a 3 b 這個比較容易實現了。define cons a b expt 2 a expt 3 b cons 2 2 value 36 根據題中的意思,並將其與car和cdr模擬,得知car是要分離出2 a,cdr是要...
SICP練習 150 練習4 6
這道題須要我們將let表示式轉換成對應的表示式。let 從上面的演示樣例我們能夠看到在let表達中。如果其為expr。用cdr能夠得到 然後再用高階函式map搭配car來取出所有的var。相同的,如果要取出exp部分,先用cadr,再用高階函式map搭配cadr。而body部分用caddr就能夠直接...