http://www.4clojure.com/problem/23: «Написать функцию, которая переворачивает последовательность»Clojure сравнить последовательность в вектор
Одним из решений является (fn [x] (reduce conj() x))
, который проходит все тесты. Тем не менее, мне очень интересно, почему это решение работает для первого теста:
(= (__ [1 2 3 4 5]) [5 4 3 2 1])
встраивания функции вычисляет true
в РЕПЛ:
(= ((fn [x] (reduce conj() x)) [1 2 3 4 5]) [5 4 3 2 1])
true
Однако, если я оцениваю первый аргумент =
, Я получаю (5 4 3 2 1)
и (= (5 4 3 2 1) [5 4 3 2 1])
выбрасывает ClassCastException
.
Почему первая работая, а вторая нет? Похоже, что они должны быть эквивалентными ...
Nice! Просто начав с Clojure, поэтому я не знал о 'in' – FeifanZ