Если функция возвращает вектор, вам не нужно оборачивать ее чем-либо, просто верните вектор в скобках. Тело функции не обязательно «заключено» в скобки, оно просто очень распространено, потому что обычно функции делают несколько вещей перед возвратом значения, что включает использование скобок.
Так что, если вы просто возвращаете вектор из функции, «тело» функции может быть [foo,bar,baz]
. Если вы возвращаете карту, тело функции может быть {:a foo, :b bar, :c baz}
. Если вы возвращаете одно значение, это может быть один символ.
Единственное, что "заключено" в круглые скобки - это само определение функции, будь то (fn [] ...)
, #(...)
или (defn [] ...)
.
Еще одно примечание: скобки и скобки [
, ]
, {
и }
на самом деле являются просто синтаксическим сахаром для функций (vector)
и (hash-map)
соответственно, поэтому [1,2,3]
- это такой же как (vector 1 2 3)
и {:a foo, :b bar}
такой же как (hash-map :a foo :b bar)
. Если это поможет вам увидеть тела функций, «обернутые» в скобках, вы можете использовать более длинные имена функций, чтобы возвращать векторные и картографические типы данных Clojure, но использование скобок и скобок гораздо более идиоматично.