Функції планування, Детальна інформація

Функції планування
Тип документу: Реферат
Сторінок: 5
Предмет: Комп`ютерні науки
Автор: Олексій
Розмір: 0
Скачувань: 854
MAP - функціонали не підвищують обчислювальну потужність Ліспу, але є зручними засобами у програмуванні. Як ми побачили, в якості першого їх аргументу є функція. В залежності від арності цієї функції, після функціонального аргумента йде відповідна кількість аргументів - списків. Якщо списки різні по довжині, то кількість повторень визначається довжиною найбільш короткого списка.

I

u

H

n

x

U

TH

e

p

r

Ue

планування на прикладі задачі додавання двох матриць. Функція vectorsum знаходить вектор, який дорівнює сумі її двох аргументів - векторів. Функція ADDMATR знаходить суму двох матриць.

(DEFUN vectorsum (x y) (DEFUN addmatr (x y)

(MAPCAR '+ x y)) (MAPCAR 'vectorsum x y))

$ (addmatr '((1 2 3)(4 5 6)(7 8 9)) '((1 1 1)(2 2 2)(3 3 3)))

$ ((2 3 4) (6 7 8) (10 11 12))

Наступні предикати планування виконують тестові функції над елементами одного чи декількох списків поки не зустрінеться або критерій закінчення, або кінець одного зі списків. Наведені далі функції виконують дії предиката <тест> над car-об’єктами <списку1>, ..., <спискуN>, потім - над cadr-об’єктами кожного списку і так далі поки тест не поверне значення, відмінне від NIL, або не зустрінеться кінець списку.

(SOME <тест>, <список1>, <список2>, ..., <списокN>). Якщо тест повертає значення, відмінне від NIL, SOME повертає це значення. Якщо кінець списку досягнуто, SOME повертає NIL. Функцію SOME можна визначити наступним чином:

(DEFUN SOME (TST LST1 LST2)

(LOOP

((OR (NULL LST1) (NULL LST2)) NIL)

((FUNCALL TST (POP LST1) (POP LST2))) ) )

$ (SOME 'EQL '(DOG CAT COW) '(COW CAT DOG))

T

$ (SOME 'PLUSP (LIST 0 -3 -4 -6))

NIL

(NOTANY <тест>, <список1>, <список2>, ..., <списокN>). Якщо тест повертає значення, відмінне від NIL, NOTANY повертає NIL. Якщо зустрінеться кінець списку, повертається Т. Функцію NOTANY можна визначити наступним чином:

(DEFUN NOTANY (TST LST1 LST2)

(NOT (SOME TST LST1 LST2)) )

The online video editor trusted by teams to make professional video in minutes