In the picture language in SICP我無法理解如何transform-painter程序的工作原理: (define (transform-painter painter origin corner1 corner2)
(lambda (frame)
(let ((m (frame-coord-map frame)))
(let ((new
我正在通過SICP工作,並且我正在進行的練習要求提供返回列表中最後一個元素的過程。我實現了程序last-pair要做到這一點,但我很困惑,爲什麼它返回一個列表,而不是一個數字: (define (last-pair alist)
(cond ((null? (cdr alist))
(car alist)) ; still happens if this is just "
我修改了SICP中count-change函數的代碼,以便在函數遞歸時它將顯示一對。這對的形式是"(cc a k)" -> "(cc a (- k 1))"或"(cc a k)" -> "(cc (- a (d k)) k)",我的目標是建立一個DOT文件來顯示使用GraphViz的樹狀遞歸。 下面是一個例子的圖像,從下面的代碼生成: 這裏的方案的代碼: ; Count Change
我遇到了Scheme中一些棘手的lambda表達式的問題,我想看看它們是如何被解釋器評估的。 我希望Scheme解釋器打印所有的評估步驟,如SICP Section 1.1.5, "The Substitution Model for Procedure Application"所示。 我正在尋找使用任何Scheme解釋器的解決方案。我已經嘗試過Racket's tracing,但它只跟蹤過程調用
我目前正在通過練習1.3的sicp書。這裏的問題描述:我嘗試用下面的代碼 (define (square x) (* x x))
(define (sq2largest a b c)
((define large1 (if (> a b) a b))
(define small (if (= large1 a) b a))
(define large2 (i