Написание пакетов для оценки логики в Maxima - PullRequest
1 голос
/ 17 июня 2019

Я пытаюсь поработать над некоторой логической эквивалентностью в 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?Спасибо.

...