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




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


/p>

        Пример:

          * ( append ' ( a b ) ' ( c ) )

          ( a b c )


        APPEND объединяет элементы, не изменяя их.

          * ( append ' ( list ) ' ( ' ( a b ) ' ( c ) ) )

          ( list ( quote ( a b ) ) ( quote ( c ) ) )

3.5.1.1 Объединяющие функции.

Рассмотрим несколько примеров,что бы показать отличие

.

        Примеры:

          * ( list ' ( a b ) ' ( c d ) )

          ( ( a b ) ( c d ) )

          * ( cons ' ( a b ) ' ( c d ) )

          ( ( a b ) c d )

          * (append ' ( a b ) ' ( c d ) )

          ( a b c d )

  • cons всегда берет два аргумента и помещает первый в начало второго.

  • list берет один или больше аргументов и образует список, помещая аргументы в скобки.

  • append образует новый список, убирая скобки вокруг аргументов и помещая их в один список.

Дополнительные сведения об отличии функций.

Функция Аргументы Действие
LIST s s s ... ( s s s... )
CONS > s ( list ) ( s list )
APPEND (l) (l) (l)... ( l l l ...)

3.5.2 REVERSE.

Функция REVERSE изменяет порядок элементов в аргументе.

( REVERSE < список > )

        Пример:

          * ( reverse ' ( a b c ) )
          ( c b a )


  • Аргументом reverse должен быть список.

  • reverse не меняет порядок в списках более нижнего уровня.

              * ( reverse ' ( ( a b c ) e ) )

              ( e ( a b c ) )

    3.5.3 LAST.

    Функция LAST удаляет из списка все элементы кроме последнего.

    ( LAST < список > )

              Пример:

                * ( last ' ( a b c ) )

                ( c )


    3.6 Базовые предикаты.

    Предикат в Лиспе - это функция,которая определяет обладает ли аргумент определенным свойством, и возвращает в качестве значения T или NIL.

    3.6.1 ATOM.

      ATOM проверяет , является ли аргумент атомом.

      Значение будет Т , если атом , и nil в обратном случае.

    ( ATOM < s - выражение >)

      Примеры:

        * ( atom 'x )

        t

        *( atom '( a b ) )

        nil

        *( atom ( cdr ' ( a b ) ) )

        nil

        * ( atom ( car ' ( a b ) ) )

        t

    Предикат atom с пустым списком nil:

      *( atom nil )

      t

      * ( atom ( ) )

      t

    3.6.2 EQ.

    Предикат EQ сравнивает два символа и возвращает Т, если они одинаковые, и nil в обратном случае.

    <




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