Clojure - утверждения относительно последовательностей, использующих «тождественно?» - PullRequest
1 голос
/ 02 марта 2020

В моей программе я пытаюсь проверить свою программу, написав тесты, которые проверяют функциональность моих определенных функций. Я проверяю равенство последовательностей после того, как они прошли через мою функцию.

Определение моего обратного:

(defn my-reverse [coll]
  (if (empty? coll)
    []
    (conj
      (my-reverse (rest coll))
      (first coll)
    )
  )
)

Я не знаю, почему я проваливаю утверждение, так как (мой -reverse [1]) возвращает [1]. Вот утверждение:

(assert (identical? (my-reverse [1]) [1]))

Спасибо всем заранее!

1 Ответ

7 голосов
/ 02 марта 2020

identical? возвращает true только в том случае, если аргументы ссылаются на один и тот же объект, что не будет иметь место, если ваша функция my-reverse создает новый список. Вы можете просто использовать =:

(assert (= (my-reverse [1]) [1]))
...