В общей шепелявости существует map
, что позволяет делать такие вещи:операция между двумя списками
(map (lambda (x y) (/ x y)) (list 2 4 6 8 10 12) (list 1 2 3 4 5 6))
возвращающимся (2 2 2 2 2 2)
Однако сейчас я работаю в ACL2 и нет такой вещи как map
. Так что, на мой взгляд, единственный выбор, который у меня есть, - это рекурсия, чтобы рассчитать то, что я хочу, если нет другого более простого и/или более эффективного способа сделать это.
... Это точно мой вопрос. Есть ли лучший способ сделать это, чем создать рекурсивную функцию, называемую чем-то вроде divide-two-lists
? Это просто похоже на то, что естественный язык на основе lisp должен делать, а не создавать для вас другую функцию специально для этого, поэтому я спрашиваю.
ACL2 ограничен, чтобы не поддерживать многие типичные функции Lisp по дизайну, а функции более высокого порядка относятся к тем функциям, которые были вырезаны. –