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




Логические функции. Управляющие структуры


ЛЕКЦИЯ 4.

Логические функции. Управляющие структуры. Простые функции печати. PROGN.


Содержание

4.1 MEMBER.

    Функция проверяет, находится ли первый аргумент внутри списка, представленного вторым аргументом.

    Если элемента в списке нет, MEMBER возвращает nil.


    Функция MEMBER имеет два аргумента:

  • Первый аргумент - это s-выражение,

  • Второй - обязательно список.

( MEMBER < s-выражение > < список > )



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

    ( b a )


    Если элемент в списке есть, то MEMBER возвращает хвост второго аргумента, начинающийся с этого элемента.

Таким образом member в качестве истины возвращает не Т , а величину не-NIL.

В Лиспе для предикатов значение не-NIL означает истину.



    * ( member ' с ' ( a b ( c ) ) )

    NIL


Т.к. элемент находится
не на том уровне.

4.2 Логические функции.

Для объединения предикатов в сложные выражения и для выделения элементов - NIL в Лиспе

используются логические функции

,

и

.

4.2.1 NOT.

            Функция NOT берет один аргумент и возвращает значение, противоположное значению аргумента. Если аргумент NIL,
            NOT возвращает Т. Если аргумент любое значение не-NIL,
            NOT возвращает NIL.



    NOT имеет один аргумент, который может быть
    любым s-выражением (не только предикатом).

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


Примеры:

          * ( not ( zerop 1 ) )
          T


          * ( not nil )

          T


          * ( not ' ( a b c ) )

          NIL



4.2.2 OR.

        Логическая функция OR берет один или несколько аргументов. Она выполняет эти аргументы слева направо и возвращает значение первого аргумента, который не NIL.Если все аргументы OR имеют значение NIL, то OR возвращает NIL.



    В OR , аналогично NOT, аргументами могут быть любые выражения.

( OR < arg-1 >< arg-2 >< arg-3 > . . . )

      Примеры:

            * ( or t nil )

            T


            * ( or nil nil )

            NIL


            * ( or ( atom 1) ( > 3 4 ) '( a b c ) ) )

            ( a b c )



      Таким образом:

      • OR возвращает значение не-NIL, если по крайней мере один аргумент не NIL.

      • OR используется для выделения первого не пустого элемента в списке.
      <




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