Вчера минут 20 медитировал над следующей функцией:
;; relative-2-absolute : (listof number) -> (listof number)
;; to convert a list of relative distances to a list of absolute distances
;; the first item on the list represents the distance to the origin
(define (relative-2-absolute alon)
(cond
[(empty? alon) empty]
[else (cons (first alon)
(add-to-each (first alon) (relative-2-absolute (rest alon))))]))
;; add-to-each : number (listof number) -> (listof number)
;; to add n to each number on alon
(define (add-to-each n alon)
(cond
[(empty? alon) empty]
[else (cons (+ (first alon) n) (add-to-each n (rest alon)))]))
Про то, что сам бы я так не написал я молчу
... но я даже не сразу в решение въехал
По ходу дела подумал, что для того, чтобы быстрее понмать как работает та или иная функция, а также для отладки мне бы (наверное) помог бы отадочный вывод информации вида:
f1(параметр1=..., параметр2=.., ...)
f1(параметр1=..., параметр2=.., ...)
f2(параметр1=..., параметр2=.., ...)
....
То есть развертка всех рекурсий. Такое возможно получить?
... << RSDN@Home 1.2.0 alpha rev. 786>>