У меня есть эта программа:
(define scale-tree
(lambda (tree factor)
(map (lambda (sub-tree)
(if (list? sub-tree)
(scale-tree sub-tree factor)
(* sub-tree factor)))
tree)))
(scale-tree (list 1 (list 2 (list 3 4) 5) (list 6 7))
10)
Как работает этот код? Сначала мы даем ему весь список в качестве параметра (list 1 (list 2 (list 3 4) 5) (list 6 7))
, а при первом вызове (lambda (sub-tree)
получает (list 1 (list 2 (list 3 4) 5) (list 6 7))
в качестве параметра. Для этого мы снова вызываем (scale-tree sub-tree factor)
с (list 1 (list 2 (list 3 4) 5) (list 6 7))
. Когда список сокращается?
Спасибо.