Подтвердить что ты не робот

Clojure и scala interop

Мне известно, что scala классы/объекты могут быть вызваны из clojure, поскольку scala компилируется в байт-код, а clojure им удобен.

Однако как безболезненно вызывать функции clojure и импортировать пространства имен из scala?

Я хотел бы смешать отличную рамку подъема и clojure, в основном вызывать код clojure из лифта.

4b9b3361

Ответ 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.