Я пишу функцию, которая принимает последовательность треугольников (которые на самом деле представлены как maps
).
Моя спецификация:
(s/fdef triangle-list-to-pattern
:args (s/cat :trs (s/* ::maths/Triangle))
)
И функция принимает один аргумент, trs, который представляет собой последовательность треугольников.
Однако, когда я использую эту функцию и вызываю ее, я получаю следующую ошибку:
fails spec: :patterning.maths/Triangle at: [:args :trs] predicate: map?
Если я явно проверяю аргумент, который передаю функции со спецификацией, он проходит. На самом деле это просто последовательность вещей, которые соответствуют критериям Треугольника.
Функция вроде работает. Аргумент кажется правильным и соответствует спецификации при отдельном тестировании. Итак, я предполагаю, что я как-то неправильно понимаю fdef
.
В чем проблема?
Примечание. ::Triangle определяется:
(s/def ::Triangle (s/keys :req-un [::A ::B ::C ::a ::b ::c ::ax ::ay ::bx ::by ::cx ::cy]))