Apply_: 1 - не является корректным именем функции! [Homelisp]
Формулировка задачи:
Добрый день, делаю лабораторную, и взял пример функции с другой темки(Используя отображающие функционалы построить декартово произведение двух множеств)
Сначала ввёл - всё работает, прошло время и функция не работает выдавая данную ошибку. Пробовал другие версии Homelisp, перезапускал редактор и ПК - не помогло.
Пробовал разные вариации(for считает за символ, mapcan не знает и т.п.)
В чем ошибка?
Apply_: 1 - не является корректным именем функции!
Решение задачи: «Apply_: 1 - не является корректным именем функции! [Homelisp]»
textual
Листинг программы
(defun f (l m) (mapcar #'(lambda (l) (mapcar #'(lambda (m) (list l m)) m)) l)) ==> F (f '(a b c) '(1 2 3 4)) ==> (((A 1) (A 2) (A 3) (A 4)) ((B 1) (B 2) (B 3) (B 4)) ((C 1) (C 2) (C 3) (C 4))) (defun cart-set (x y) (apply 'append (mapcar #'(lambda (a) (mapcar #'(lambda (b) (list a b)) y)) x))) ==> CART-SET (cart-set '(a b c) '(1 2 3 4)) ==> ((A 1) (A 2) (A 3) (A 4) (B 1) (B 2) (B 3) (B 4) (C 1) (C 2) (C 3) (C 4))
Объяснение кода листинга программы
Код представляет собой две функции.
- (defun f (l m) (mapcar #'(lambda (l) (mapcar #'(lambda (m) (list l m)) m)) l)) Функция f принимает два аргумента l и m. Она использует функцию mapcar для применения анонимной функции к каждому элементу списка l. Анонимная функция принимает аргумент m и возвращает список, содержащий элементы m, каждый из которых является списком, содержащим элементы l. Таким образом, функция f создает список списков, где каждый внутренний список содержит элементы l и m.
- (defun cart-set (x y) (apply 'append (mapcar #'(lambda (a) (mapcar #'(lambda (b) (list a b)) y)) x))) Функция cart-set принимает два аргумента x и y. Она использует функцию apply для применения функции append к каждому элементу списка, полученного с помощью функции mapcar. Анонимная функция, используемая функцией mapcar, принимает аргумент a и возвращает список, содержащий элементы, полученные с помощью функции mapcar. Эта анонимная функция принимает аргумент b и возвращает список, содержащий элементы, состоящие из элемента a и элемента b. Таким образом, функция cart-set создает список, содержащий все возможные комбинации элементов x и y. Обе функции применяются к аргументам '(a b c) и '(1 2 3 4). Функция f возвращает список списков, где каждый внутренний список содержит элементы '(a b c) и '(1 2 3 4). Функция cart-set возвращает список, содержащий все возможные комбинации элементов '(a b c) и '(1 2 3 4).