ВУЗ:
Составители:
Рубрика:
18
[5] (second '(1 (b с) 2))
(B С)
Форма LET
Другой разновидностью лямбда – исчисления в Лиспе является форма LЕТ,
которая имеет вид:
(LET ((V1 A1) (V2 А2)... (Vn An)) S1 S2... Sm),
где Vi, Ai, Si имеют такой же смысл как и в лямбда – преобразовании.
По сути форма LЕТ является синтаксическим видоизменением лямбда–
преобразования, в которой пары формальных и фактических параметров помещены в
начале формы.
Оформление вычисления второго элемента в списке ‘(А В С) используя форму
LЕТ:
[6] (let ((l '(а b с))) (cadr l))
B
Форму LЕТ, подобно лямбда–преобразованию, можно использовать для
вычисления именованной функции при ее определении:
[7] (define (second1 l) (let ((l l)) (cadr l)))
SECOND1
[8] (second1 '(1 (b с) 2))
(B С)
Если в форме LЕТ имеется несколько пар формальных и фактических
параметров, то связь между соответствующими переменными и их значениями
устанавливается одновременно.
Последовательная форма LET*
Если вычислять с помощью формы LЕТ приведенный ниже пример, выйдет
ошибка: не связанный атом Х:
[9] (let ((х 1) (у (* 2 х))) (list х у))
[VM ERROR encountered!]
В то же время так называемая последовательная форма LЕТ*, в которой связи
между переменными и их значениями устанавливаются последовательно,
примененная в этом примере, даст нормальный результат:
[10] (let* ((х 1) (у (* 2 х))) (list х у))
(1 2)
18 [5] (second '(1 (b с) 2)) (B С) Форма LET Другой разновидностью лямбда – исчисления в Лиспе является форма LЕТ, которая имеет вид: (LET ((V1 A1) (V2 А2)... (Vn An)) S1 S2... Sm), где Vi, Ai, Si имеют такой же смысл как и в лямбда – преобразовании. По сути форма LЕТ является синтаксическим видоизменением лямбда– преобразования, в которой пары формальных и фактических параметров помещены в начале формы. Оформление вычисления второго элемента в списке ‘(А В С) используя форму LЕТ: [6] (let ((l '(а b с))) (cadr l)) B Форму LЕТ, подобно лямбда–преобразованию, можно использовать для вычисления именованной функции при ее определении: [7] (define (second1 l) (let ((l l)) (cadr l))) SECOND1 [8] (second1 '(1 (b с) 2)) (B С) Если в форме LЕТ имеется несколько пар формальных и фактических параметров, то связь между соответствующими переменными и их значениями устанавливается одновременно. Последовательная форма LET* Если вычислять с помощью формы LЕТ приведенный ниже пример, выйдет ошибка: не связанный атом Х: [9] (let ((х 1) (у (* 2 х))) (list х у)) [VM ERROR encountered!] В то же время так называемая последовательная форма LЕТ*, в которой связи между переменными и их значениями устанавливаются последовательно, примененная в этом примере, даст нормальный результат: [10] (let* ((х 1) (у (* 2 х))) (list х у)) (1 2)
Страницы
- « первая
- ‹ предыдущая
- …
- 16
- 17
- 18
- 19
- 20
- …
- следующая ›
- последняя »