Micro Lisp. Основные понятия, структуры и функции. Яшин Л.З. - 28 стр.

UptoLike

Составители: 

28
аргумент к его параметрам. Такие функционалы называют применяющими или
аппликативными функционалами (APPLY и FUNCALL).
Применяющие функционалы родственны универсальной функции Лиспа
EVAL. В то время как EVAL вычисляет значение произвольного выражения (формы),
применяющий функционал вычисляет значение вызова некоторой функции.
Интерпретатор Лиспа EVAL и на самом деле вызывает применяющий функционал
APPLY при вычислении вызова, а APPLY в свою очередь вызывает EVAL при
вычислении значения других форм.
Применяющие функционалы дают возможность интерпретировать и
преобразовывать данные в программу и применять ее в вычислениях. Ниже
рассмотрим применяющий функционал интерпретатора Лиспа APPLY.
Применяющий функционал APPLY
APPLY применяет функцию, переданную как параметр, к списку аргументов:
(APPLY function x1 x2 x3 … xN) Ù (function ‘x1 ‘x2 ‘x3 … ‘xN) , где список=(х1 х2 ...
хN)
APPLY является (в своей исходной форме) функцией двух аргументов, из
которых первый аргумент представляет собой функцию, которая применяется к
элементам списка, составляющим второй аргумент функции APPLY:
[1] (apply + '(4 7))
11
[2] (apply cons '(что (пожелаете)))
(ЧТО ПОЖЕЛАЕТЕ)
[3] (define f)
F
[4] (set! f '+)
+
[5] (аррlу f '(900 77))
977
Использование APPLY дает большую гибкость по сравнению с прямым
вызовом функции: с помощью одной и той же функции APPLY можно в зависимости
от
функционального аргумента осуществлять различные вычисления.
[15] (apply (lambda (х у) (+ х у)) '(6 5))
11
[16] (define s)
S
[17] (set! s '(5 7))
(5 7)
[18] (apply cdr (list s))
(7)
[19] (apply (lambda (n) (* n n)) (cdr s))
49
[20] (apply (lambda (n) (* n n)) (car s))
25
                                          28

аргумент к его параметрам. Такие функционалы называют применяющими или
аппликативными функционалами (APPLY и FUNCALL).
      Применяющие функционалы родственны универсальной функции Лиспа
EVAL. В то время как EVAL вычисляет значение произвольного выражения (формы),
применяющий функционал вычисляет значение вызова некоторой функции.
Интерпретатор Лиспа EVAL и на самом деле вызывает применяющий функционал
APPLY при вычислении вызова, а APPLY в свою очередь вызывает EVAL при
вычислении значения других форм.
      Применяющие функционалы дают возможность интерпретировать и
преобразовывать данные в программу и применять ее в вычислениях. Ниже
рассмотрим применяющий функционал интерпретатора Лиспа APPLY.

Применяющий функционал APPLY
     APPLY применяет функцию, переданную как параметр, к списку аргументов:
(APPLY function x1 x2 x3 … xN) Ù (function ‘x1 ‘x2 ‘x3 … ‘xN) , где список=(х1 х2 ...
хN)
      APPLY является (в своей исходной форме) функцией двух аргументов, из
которых первый аргумент представляет собой функцию, которая применяется к
элементам списка, составляющим второй аргумент функции APPLY:
       [1] (apply + '(4 7))
       11
       [2] (apply cons '(что (пожелаете)))
       (ЧТО ПОЖЕЛАЕТЕ)
       [3] (define f)
       F
       [4] (set! f '+)
       +
       [5] (аррlу f '(900 77))
       977


      Использование APPLY дает большую гибкость по сравнению с прямым
вызовом функции: с помощью одной и той же функции APPLY можно в зависимости
от функционального аргумента осуществлять различные вычисления.
       [15] (apply (lambda (х у) (+ х у)) '(6 5))
       11
       [16] (define s)
       S
       [17] (set! s '(5 7))
       (5 7)
       [18] (apply cdr (list s))
       (7)
       [19] (apply (lambda (n) (* n n)) (cdr s))
       49
       [20] (apply (lambda (n) (* n n)) (car s))
       25