Я правильно понимаю, что named let
(
http://docs.plt-scheme.org/guide/let.html#(part._.Named_let)) в scheme
всего лишь синтаксический сахар, позволяющий более удобно записывать
итераторы?
Ведь даже пример, приведенный в документации:
(define (duplicate pos lst)
(let dup ([i 0]
[lst lst])
(cond
[(= i pos) (cons (car lst) lst)]
[else (cons (car lst) (dup (+ i 1) (cdr lst)))])))
(define lst (list "a" "b" "c"))
(duplicate 1 lst)
можно записать и без использования данной конструкции:
(define (duplicate2 pos lst accum)
(cond
[(= accum pos) (cons (car lst) lst)]
[else (cons (car lst) (duplicate2 pos (cdr lst) (+ accum 1)))]))
(duplicate2 1 lst 0)
Posted via RSDN NNTP Server 2.1 beta
Здравствуйте, DemAS, Вы писали:
DAS>Я правильно понимаю, что named let
DAS>(http://docs.plt-scheme.org/guide/let.html#(part._.Named_let)) в scheme
DAS>всего лишь синтаксический сахар...
Да, это всего лишь обертка над letrec.