Clojure и scala interop
Мне известно, что scala классы/объекты могут быть вызваны из clojure, поскольку scala компилируется в байт-код, а clojure им удобен.
Однако как безболезненно вызывать функции clojure и импортировать пространства имен из scala?
Я хотел бы смешать отличную рамку подъема и clojure, в основном вызывать код clojure из лифта.
Ответы
Ответ 1
Семантика импорта в Scala в основном такая же, как Java. Вы сможете получить необходимую информацию, прочитав о том, как вызвать код Clojure с Java, затем примените те же принципы в Scala.
Если вы хотите скомпилировать свой код Clojure и включить его как JAR в свой путь к классам, это сообщение должно быть релевантным:
Вызов Clojure из Java
Если вы предпочитаете динамически компилировать/интерпретировать файлы .clj, вы должны прочитать следующее:
Clojure Программирование: вызов Clojure из Java
Первый вариант кажется мне намного приятнее.
Ответ 2
FWIW, у меня был подобный опыт в последнее время. Не всегда прямо потреблять библиотеки scala в кодовой базе clojure. Если авторы библиотеки не учитывают ни одного scala потребителей при проектировании api, интеграция может быть тривиальной. Если нет, вам, возможно, придется узнать подробности о том, какой интерфейс java создается библиотекой scala, которую вы пытаетесь использовать.
Недавно я написал документацию об этой точной теме (https://github.com/grandbora/clojure-scala-cantrips#clojure-scala-cantrips), и есть несколько библиотек clojure, в которых содержится сахар синтаксис для использования библиотек scala.