Зворотний зв'язок

Засоби та принципи програмування на Ліспі

Знаючи довжини списків lst1 та lst2 (k та l відповідно), ми знаємо довжину результуючого списку lst3 (m=k+l). Необхідно згенерувати список lst3, який складається з m елементів, кожний з яких дорівнює 0. Це зробить функція (GEN0 n).

Функція (mas lst n) повертає n-ий елемент списку lst. Функція (CHANGE lst n value) повертає список lst, в якому n-ий елемент набув значення value.

(DEFUN MAS (lst n)

((ZEROP n) (CAR lst))

(MAS (CDR lst) (- n 1)) )

(DEFUN CHANGE (lst n value)

((ZEROP n) (POP lst) (PUSH value lst))

(CONS (CAR lst) (CHANGE (CDR lst) (- n 1) value)) )

Тоді функція MULTPOL, яка написана на Паскалі, на Ліспі набуває наступного вигляду:

(DEFUN MULTPOL (lst1 lst2)

(SETQ k (LENGTH lst1) l (LENGTH lst2) lst3 (GEN0 (+ k l)))

(SETQ i 0)

(POP lst3)

(LOOP

((= i k) lst3)

(SETQ j 0)

(LOOP

((= j l))

(SETQ lst3 (CHANGE lst3 (+ i j) (+ (MAS lst3 (+ i j)) (* (MAS lst1 i) (MAS lst2 j)))) )

(INCQ j) )

(INCQ i) ) )

Середовище muLisp має також вмонтовану функцію MAKE-LIST, яку можна використовувати для створення списків заданого розміру. Функція (MAKE-LIST n об’єкт список) утворює список з n елементів, кожний з яких приймає значення об’єкту, приєднані до списку. Якщо не задано перший аргумент, то по замовченню n = 0. Якщо другий аргумент не задано, то вважається об’єкт = NIL.

$ (MAKE-LIST 3 ‘(q w))$ (MAKE-LIST 4)$ (MAKE-LIST 3 5 ‘(2 3))

((q w)(q w)(q w))(NIL NIL NIL NIL)(5 5 5 2 3)


Реферати!

У нас ви зможете знайти і ознайомитися з рефератами на будь-яку тему.







Не знайшли потрібний реферат ?

Замовте написання реферату на потрібну Вам тему

Замовити реферат