Я хотел бы написать функцию all-neq
, которая похожа на встроенную neq
, за исключением того, что она также обеспечивает, что никакие два элемента не могут быть одинаковыми (вместо того, чтобы только первый отличался от остальных).
Итак, хотя вывод (neq 3 4 5 5)
равен ИСТИНА, я хочу, чтобы (all-neq 3 4 5 5)
был ЛОЖЬ, так как есть два 5.
Вот что я пробовал, но я получаю ошибкуотносительно списка параметров в качестве входа.
(deffunction all-neq ?args
(foreach ?arg1 ?args
(foreach ?arg2 ?args
(if (and (not (eq ?arg1-index ?arg2-index))
(eq ?arg1 ?arg2)) then
(return FALSE))))
(return TRUE))
Сообщение об ошибке для этого:
[PRNTUTIL2] Syntax Error: Check appropriate syntax for parameter list.