5 ms·
I don't think there's anything fundamental about a compiled language that prevents it from having a REPL. (If anything, you could always have a dedicated interp
by tikhonj 9y ago
I don't think there's anything fundamental about a compiled language that prevents it from having a REPL. (If anything, you could always have a dedicated interpreter for interactive work—"compiled" and "interpreted" are functions of the implementation, no the language.)
In practice the compiled languages I've used extensively (OCaml and Haskell) do have REPLs, but ones that aren't nearly as powerful as some other languages. I'm not sure exactly why it's the case, but I certainly don't think it's impossible for them to have good REPLs. My guess is that there are some properties of the languages that make a good REPL a bit more difficult to implement, and there simply hasn't been enough community investment to overcome that.
I wish there was because I basically live in GHCi (Haskell's REPL) and sorely wish for a few core improvements like hot loading updated code when possible.
- Zak 9y ago> If anything, you could always have a dedicated interpreter for interactive work CMUCL does that. There's an interpreter that's used for the REPL and optionally for loading files on the fly, and an optimizing AOT compiler. SBCL drops the interpreter and just runs the compiler with settings that make it reasonably fast for interactive use as I recall. Clojure, too just uses the compiler interactively and not a separate interpreter.
- mamcx 9y agoI wonder how do that. I'm building a language that truly will benefit for a REPL (is for database development) but also do it compiled simplified other things. Is done on .NET/F#. I wonder how architect the thing so I can have a good repl yet compiled... but how?
- bernadus_edwin 9y agoI hope jetbrain will do something magic on repl
- Zak 9y agoSince more than a few language implementations already do things like that, I'm inclined to say that's more or less a solved problem.
- mamcx 9y agoYeah, but I have not find a resource that explain how is done.