[scheme] - named let
От: DemAS http://demas.me
Дата: 29.06.09 10:45
Оценка:
Я правильно понимаю, что 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
Re: [scheme] - named let
От: Mr.Cat  
Дата: 09.07.09 20:12
Оценка:
Здравствуйте, DemAS, Вы писали:
DAS>Я правильно понимаю, что named let
DAS>(http://docs.plt-scheme.org/guide/let.html#(part._.Named_let)) в scheme
DAS>всего лишь синтаксический сахар...
Да, это всего лишь обертка над letrec.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.