No, the question was, and here I quote:
“Why do other languages dont have a REPl like LISP’s?” [sic]
Or if you prefer:
The most correct answer was already given by Sean Corfield in his first response above, which I can summarize by stating simply: they can’t. At least not without a great deal of difficulty, and that isn’t something worth pursuing in most cases.
It has absolutely nothing to do with any deliberate design choice on the part of the respective language designers to not introduce certain features that would make this possible. In fact, it isn’t even about the design of the language, but the design of a specific tool, in this case the REPL.
You admit that you “sort of” agree that your argument is a false dichotomy, yet you persist in pursuing the same train of thought nonetheless. There is no either/or choice to be made here. Let me illustrate by briefly describing my current setup. I have a project with server-side Clojure code in .clj files, client-side ClojureScript code in .cljs files, and a large amount of code in .cljc files. I develop in emacs with one source window, and two REPLs, one a Clojure REPL, the other a ClojureScript REPL.
As I make changes, the first thing I do is to compile the top-level form surrounding the change to make sure it will eventually compile in the source file. I then test it by running unit tests which I launch from, wait for it, yes, the REPL. This takes a few seconds tops. If anything fails, I can go back and fix it immediately, and go through the process again, until it passes. Once all the tests I think need to be run work, I then hit the save button on the source file, and that triggers all other tests and so on.
The key thing is that I get instant feedback on whether something works or not in the context of the running program, and then I continue the development process as I would if I didn’t have a REPL. Sure I could do all of this without a REPL, but I would have to be nuts to do so as I would be spending a considerable amount of time in the loop: make a change, save the source file, compile, run all tests, run the resultant compiled program, get the compiled program into a state where I can check my change works, test the program manually to see if the change behaves as it expected, then go through the same process again for every single change?! Are you seriously trying to say that this latter process I’ve just described is faster than the process where you don’t have to do all of those things:
Because that’s what it sounds like.
In short, you are driving at something which simply isn’t true: it’s as if you are saying that in Clojure/Script you can only develop in the REPL or you can develop by compiling source files and going through the same process as all the other languages do. But that’s not how it works. As I’ve already stated, you do both. The REPL is a tool that is added to the mix to support the overall development process, to make it considerably faster and to give you direct access to the runtime of your program. If you really do find the REPL to be much slower, fair enough, but the majority of people don’t.
According to whom exactly? You, certainly. But are you including everybody else out there who programs in JS, Python, Ruby, Erlang, Haskell or any other language which provides a REPL? I’m reasonably certain that the majority of people, if they had access to such a feature, would absolutely love it. But the reason they don’t have access to it is because it’s too difficult to implement in all those other languages. That’s all there is to it.