В Clojure 1.2 и предыдущих аргументах функции нет типов. каждый аргумент функции является объектом . Поэтому на самом деле возникает вопрос: «Как мне найти функции, которые приведут объект, который я передаю, к этому типу?», Поэтому поиск подсказок по типу найдет некоторые из них, хотя это не даст вам ничего. в общем.
начиная с версии 1.3 (текущая ветвь разработчика 9/2010), параметры функции и возвращаемые типы могут иметь определенный тип и будут передаваться / возвращаться как этот тип, а не приводиться к объекту, а затем приводятся на другой стороне. Это отбрасывает один из нулей из времени выполнения числовых функций с важным ограничением, что оно работает только для: статических функций и только с прямыми вызовами (то есть: не с помощью map / lower / filter / etc.) Пока что об этом изменении опубликовано не так много, хотя в нем есть важное критическое изменение: целые числа больше не упаковываются по умолчанию, а переполнение целых чисел (фактически длинных) вызывает исключение. Вы можете прочитать больше здесь
(defn ^:static fib ^long [^long n]
(if (<= n 1)
1
(+ (fib (dec n)) (fib (- n 2)))))
поэтому после того, как 1.3 будет выпущен и получит широкое распространение, вы увидите код с более часто определяемыми типами, потому что они обеспечат большую выгоду в скорости, и тогда вы сможете найти больше функций по типу аргумента, хотя еще не все из них.
На той же лекции, где я узнал о типах аргументов функции, Рич упомянул о планах в отдаленном будущем Clojure (после 'Clojure in Clojure') о лучшей поддержке для раскрытия внутренних частей компилятора инструментам, таким как IDE. Поэтому есть надежда, что когда-нибудь вы получите реальный ответ на этот вопрос.
Динамические языки делают это немного сложнее на практике и намного сложнее в теории.