Решение упражнения 2.39 из SICP

31 January, 2008 (21:11) | Решения упражнений

Определить reverse через свертки можно таким образом:

(define (reverse sequence) 
  (fold-right (lambda (x y) (append y (list x))) nil sequence))
(define (reverse sequence) 
  (fold-left (lambda (x y) (cons y x)) nil sequence))

Определения получаются путем анализа процесса вычислений сверток.

Хочу отметить, что использование для реверсирования последовательности левой свертки более видится более эффективным, поскольку задействованные операции более простые, а процесс итеративен.

Comments

Comment from магомед
Date: February 15, 2010, 5:08 pm

вот втором случае можно также сделать
(define (my-left-reverse sequence)
(fold-left (lambda (x y) (append (list y ) x)) nil sequence))

Write a comment