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

UptoLike

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

26
((member (car x) у)
(cons (car х)
(пересечение (cdr х) у)))
(t (пересечение (cdr х) у))))
**************************************************************************
[0] (load "f1.lsp")
ОК
[1] (пересечение '(d f g) '(h u g е))
(G)
ОРГАНИЗАЦИЯ ФУНКЦИЙ
Описание функции
Дать функции имя и определить ее можно с помощью функции DEFINE.
(DEFINE (fname param1 param2 …) тело)
Например:
[0] (DEFINE (plus a b) (+ a b))
PLUS
[1] (plus 1 2)
3
В результате fname становится именем функции.
Простая рекурсия
Функция является рекурсивной, если в её определении содержится вызов самой
этой функции. Простая рекурсияэто такой тип рекурсии, в котором вызов функции
встречается один раз. В большинстве случаев простую рекурсию можно заменить
процедурным циклом, однако, при её использовании программа, как правило,
становится более простой для понимания и элегантной.
Пример:
Определим функцию MyCOPY, которая строит копию списка:
(define (MyCOPY L)
(cond
((null? L) nil) ; условие окончанияпустой L
(t (cons ; иначе возвращаем список
; состоящий из:
(car L) ; головы исходного
(MyCOPY (cdr L)) ; и копии хвоста
; (рекурсивный вызов)
)
)
)
)
Вот результат работы этой функциии:
[1] (MyCOPY '(a bc def))
(A BC DEF)
                                                26

                         ((member (car x) у)
                             (cons (car х)
                                     (пересечение (cdr х) у)))
                         (t (пересечение (cdr х) у))))
**************************************************************************


        [0] (load "f1.lsp")
        ОК
        [1] (пересечение '(d f g) '(h u g е))
        (G)

                               ОРГАНИЗАЦИЯ ФУНКЦИЙ
Описание функции
      Дать функции имя и определить ее можно с помощью функции DEFINE.
(DEFINE (fname param1 param2 …) тело)
      Например:
       [0] (DEFINE (plus a b) (+ a b))
       PLUS
       [1] (plus 1 2)
       3
      В результате fname становится именем функции.

Простая рекурсия
      Функция является рекурсивной, если в её определении содержится вызов самой
этой функции. Простая рекурсия – это такой тип рекурсии, в котором вызов функции
встречается один раз. В большинстве случаев простую рекурсию можно заменить
процедурным циклом, однако, при её использовании программа, как правило,
становится более простой для понимания и элегантной.
          Пример:
       Определим функцию MyCOPY, которая строит копию списка:
(define (MyCOPY L)
        (cond
                ((null? L) nil) ; условие окончания – пустой L
                (t (cons                            ; иначе возвращаем список
                                                    ; состоящий из:
                        (car L)                     ; головы исходного
                        (MyCOPY (cdr L))            ; и копии хвоста
                                                    ; (рекурсивный вызов)
                        )
                )
        )
)
       Вот результат работы этой функциии:
          [1] (MyCOPY '(a bc def))
          (A BC DEF)