27 votes

Un seul REPL pour les lier tous?

Je voudrais savoir si il y a un REPL qui n'est pas spécifique à la langue. Je passe beaucoup de temps à tremper dans et hors de REPLs (principalement pour Clojure, Scala, Haskell), et le lot de tout me frustrer à une plus ou moins grande mesure. Il semble que le travail d'un REPL est assez générique, en ce qu'ils:

  • Lire: prendre l'entrée de l'utilisateur
  • Évaluer: - passer de l'entrée de certains d'exécution pour le traitement
  • Imprimer: permet d'imprimer les résultats à l'écran
  • Boucle: attendre la prochaine entrée de l'utilisateur

Je ne vois pas pourquoi il ne devrait pas être certains indépendant de la langue REPL, mais j'ai été incapable de trouver une telle chose. Certaines choses que je voudrais dans mon idéal REPL:

  • Linux application en ligne de commande
  • Histoire infinie accessibles par le biais de la flèche vers le haut
  • Possibilité de modifier les commandes précédentes avant d'exécuter à nouveau
  • ctrl-r pour l'histoire de la recherche comme bash a
  • Plusieurs sessions dans un REPL, afin que je puisse passer facilement de l'une

Et avec plus d'optimisme

  • de la syntaxe, tenant compte du contexte d'exécution de code

Est-ce à exister?

31voto

amalloy Points 29125

Bash ne sait rien de C-r : il utilise readline, qui le fait, ainsi que l'historique de la flèche vers le haut, pour cela. On dirait que le REPL que vous recherchez est readline? Juste préfixez la commande dont vous voulez un comportement de type REPL avec rlwrap (installez-le si vous ne l'avez pas - c'est génial), et vous devriez être prêt à partir.

 $ rlwrap java -jar clojure.jar
 

4voto

huynhjl Points 26045

Scala 2.9 REPL aura CTRL-R inverser le soutien à la recherche. Les nightly builds ont déjà. Il a été sensible au contexte onglet achèvement pendant un certain temps (bien qu'il pourrait être amélioré).

Lors de l'utilisation de scala, avec rlwrap, l'utilisation de l' -Xnojline drapeau:

rlwrap scala -Xnojline

Qui empêche jline d'interférer avec rlwrap. Puis rlwrap est libre d'utiliser readline pour mettre en œuvre les mouvements du curseur et de l'histoire , mais qui est avant les interprètes voit la ligne et vous n'aurez pas dépendant de la langue d'achèvement.

J'espère que la Scala REPL sera améliorée.

  • Il y a une présentation du compilateur qui fait partie de 2,9 je pense que c'est utilisé pour des choses comme mettant en évidence les erreurs et d'achèvement.
  • Le jline utilisé par scala 2.9 est capable d'utiliser les couleurs ansi tirant parti de jansi

Donc, je peux rêver qu'un jour j'aurai IDE niveau de fonctionnalité dans la Scala REPL. De façon réaliste, il nécessiterait un important effort et l'ajout de ces fonctionnalités est sûrement moins prioritaires que l'amélioration de l'éclipse de soutenir, par exemple... d'Ailleurs peut-être plus logique d'ajouter REPL soutien dans eclipse.

2voto

WReach Points 13161

Tandis que pas à proprement parler un REPL, le Seco propose un cahier de style shell qui permet d'évaluer des expressions dans n'importe quelle langue avec un JSR-223 de liaison. Cette croissance rapide de la liste comprend des langages comme Javascript, Mode, Python, Ruby, Clojure, Groovy et Prolog.

Le Seco, l'inspiration, le Mathematica ordinateur portable avant la fin de l', peut, en principe, évaluer des expressions dans toute langue, même si cela prend un certain travail à faire qui se produisent.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X