Функциональное программирование




Функции. Базовые функции - часть 3


/p>

Использование символов в качестве переменных.

Изначально символы в Лиспе не имеют значения. Значения имеют только константы.

* t

T

* 1.6

1.6

Если попытаться вычислить символ, то система выдает ошибку.

Значения символов хранятся в ячейках, закрепленных за каждым символом. Если в эту ячейку положить значение, то символ будет связан (bind) сo значением. В процедурных языках говорят "будет присвоено значение".

 

 

 

Для Лиспа есть отличие:

  • Не оговаривается, что может хранится в ячейке: целое, атом, список, массив и т.д. В ячейке может хранится что угодно.
  • С символом может быть связана не только ячейка со значением, а многие другие ячейки, число которых не ограничено.
  • Для связывания символов используется три функции:

    Функция SET.

    Функция SET cвязывает символ со значением, предварительно вычисляя значения аргументов.

     

     

    В качестве значения функция SET возвращает значение второго аргумента.

    Если перед первым аргументом нет апострофа,

    то значение будет присвоено значению этого аргумента.

    * ( set 'd ' ( x y z ) )

    ( x y z )

    * ( set a ' e )

    e

     

     

    * ( set ' a ' b )

    b

    * a

    b

    * b

    e

    На значение символа можно сослаться записав его без апострофа.

    Функция SETQ.

    Она аналогична , но не вычисляет значение первого аргумента. Буква q на блокировку.

    * ( setq m ' k )

    k

    * m

    k

     

     

    Обобщенная функция SETF.

    Действует аналогично , но может использоваться для присвоения символу не только значения.

    Базовые функции.

    В Лиспе для обработки списков, т.е. для разбора, анализа и построения списков

    существуют базовые функции. Они образуют систему аксиом языка, к которым

    сводятся символьные вычисления. В этом смысле их можно сравнить с основными арифметическими операциями. Простота базовых функций и их малое число -

    одно из достоинств Лиспа.

    Базовые функции:

    ATOM EQ

  • Функции CAR и CDR извлекают информацию из списка,

    или обеспечивают доступ к элементам списка.

  • CONS объединяет элементы в список.
  • ATOM и EQ проверяют аргументы.

  •  

     

    <




    Содержание  Назад  Вперед