Question

Je recherche un guide pour la programmation polyglotte dans ces deux langages.

Je sais que l'interopérabilité entre eux est possible, car ils fonctionnent tous les deux sur la même machine virtuelle Java et ont tous deux été compilés avec le même bytecode.Mais il y a quelques lourdeurs :

  • Puis-je utiliser compiler du code Clojure ?
  • Puis-je utiliser compiler du code Scala ?

(Ouais, ouais, je sais que je peux simplement brancher un pot d'une langue à un projet dans d'autres Lang.)

La question est donc Comment configurer le développement polyglotte dans Scala et Clojure ?

Était-ce utile?

La solution

Je ne l'ai pas utilisé, mais Leiningen a support Scalac .

Autres conseils

L'anser court: Utilisez Maven3

maven3 avec le Zi plugin pour clojure et Maven-scala-plugin vous permettra d'avoir un projet de polyglotte bien intégré où vous pouvezUtilisez n'importe quelle langue que vous voulez aussi longtemps que son Java;)

L'un des gros changements de Maven3 a été une poussée vers Polyglot JVM Programmation, y compris la possibilité d'écrire des POM dans de nombreuses langues.Vous perdez le vernis de Leiningen lorsque vous prenez cet itinéraire, bien que vous gagniez beaucoup en retour.

Personnellement, je resterais loin d'utiliser Maven directement malgré la réponse acceptée. Voici la simple définition de projet Leiningen qui:

  • génère des sources Java de la grammaire AntLR4 (en bonus);
  • compile les sources Java;
  • compile des sources de scala (je préfère utiliser Scala sur le code Java généré en AntLR4, car il est beaucoup plus concis et agréable à travailler avec);
  • continue avec des trucs de clojure.
(defproject polyglot "0.1.0-SNAPSHOT"
  :description "FIXME: write description"
  :url "http://example.com/FIXME"
  :license {:name "Eclipse Public License"
            :url "http://www.eclipse.org/legal/epl-v10.html"}
  :plugins [[lein-antlr4 "0.1.0-SNAPSHOT"]
            [lein-scalac "0.1.0"]]
  :dependencies [[org.clojure/clojure "1.5.1"]
                 [org.antlr/antlr4 "4.0"]
                 [org.scala-lang/scala-library "2.10.1"]]
  :warn-on-reflection true
  :antlr4-source-paths ["antlr4"]
  :antlr4-options {:package "parser" :listener true}
  :antlr4-compile-path "target/antlr4/parser"
  :java-source-paths ["target/antlr4/parser" "src/java"]
  :scala-source-path "src/scala"
  :prep-tasks ["antlr4" "javac" "scalac" "compile"])

Pour utiliser AntlR4 Plugin Télécharger et 'Lein Install' the plugin LEIN-ANTLR4 . Si vous n'en avez pas besoin, supprimez simplement les lignes pertinentes de la définition du projet.

Utiliser Scala Plugin, j'avais besoin de télécharger it et modifier

[org.scala-lang/scala-compiler "2.9.1"] 

à

[org.scala-lang/scala-compiler "2.10.1"]

dans le projet du plugin.clj, puis "LEIN Installez-la" localement. Avec une version de dépendance plus âgée, je reçois

java.lang.Error: typeConstructor inapplicable for <none>

du compilateur Scala.

comme une alternative Maven: gradle est capable de compiler les deux langues.

Scala Dynamic trait a été créé pour permettre une intégration plus facile avec les langages typés dynamiquement, mais vous devrez écrire votre propre redirecteur.De plus, vous devrez le réécrire avec Scala 2.10, car il a été un peu modifié.Peut-être, en fait, devriez-vous utiliser Scala 2.10 (le jalon 2 est disponible).La prise en charge de Scala 2.10 CAT peut également vous aider avec l'intégration côté Scala.

Toi peut utilisez SBT pour compiler Clojure, car SBT est très flexible, mais, de manière plus pragmatique, il n'existe pas de support de compilation Clojure facilement disponible.Vous pouvez regarder ce plugin comme exemple de la façon d'ajouter une compilation d'autres langues.

Je trouve curieux que si peu d'intégration entre Scala et Clojure semble exister.Ils sont souvent comparés et vous verrez souvent des gens dire qu'il faut choisir l'un plutôt que l'autre.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top