Я пытаюсь поработать над некоторой логической эквивалентностью в Maxima и хочу написать несколько пользовательских пакетов для этого.Я немного поэкспериментировал с пакетами в .Mac и .Lisp и до сих пор .Mac, кажется, работает для меня наиболее интуитивно, но Lisp, вероятно, намного сильнее для этого варианта использования.
Например, я попытался написать оценщик импликации в Maxima и Lisp следующим образом:
(defun simp-implies (x y)
(cond
((eq x nil) t)
((and (eq x t) (eq y t)) t)
((and (eq x t) (eq y nil)) nil)
(t (list (list *implies-op* 'simp) x y))))
implies(a, b) := not a or b
Теперь, когда я импортирую пакет .mac, я могу использовать подразумеваемые значения, как и ожидалось,но когда я использую пакет .lisp, simp-implies просто вычитает «variable» из «simp».Может кто-нибудь объяснить, почему (как работает импорт функций lisp в максимумах), а также посоветовать мне, какой из двух языков будет наиболее подходящим для написания пакетов для Maxima?Спасибо.