12 ms·
> When I am thinking about a REPL the image I have in mind is of Jupyter Notebook and Clojure, Elixir, Idris, Haskell REPLs in Emacs Thats my point is that the
by agentgt 9y ago
> When I am thinking about a REPL the image I have in mind is of Jupyter Notebook and Clojure, Elixir, Idris, Haskell REPLs in Emacs
Thats my point is that the REPL case of using Emacs to run and evaluate your code is almost hardly different than letting an IDE run your unit test. With Java this evident because the IDE compiles incrementally and the debugger can hot code swap.
The power of the REPL should not be the evaluation portion but the input or the print otherwise you can just about do any quick evaluation for any language that compiles reasonable fast.
Other than Jupyter Notebook the ones you mention don't really have any amazing output other than pretty print. To the authors point it also helps for the pretty print if the language is homoiconic.
As for input there is even fewer that have Excel like rapid response feedback. See Bret Victor on this. There was a recent
company presented here on HN called Luna [1] who have a very cool REPL. Now that is where I think REPLs should be.
> P.S. I didn't get your point about python having nominal types, duck typing seems closer to structural typing to me and mypy seems to support both, but maybe I misunderstood you. Thanks for the thought provoking discussion though :)
For the most part you need to name functions in Python (lambda support I believe is even on the way out but I can't recall the status). In fact other than I guess tuples you need to name everything in Python.
But to your point structural typing means less in a duck typing environment particularly one with really late dispatch.
[1]: https://news.ycombinator.com/item?id=14612680 https://news.ycombinator.com/item?id=14612680
- lispm 9y ago> Thats my point is that the REPL case of using Emacs to run and evaluate your code is almost hardly different than letting an IDE run your unit test. With Java this evident because the IDE compiles incrementally and the debugger can hot code swap. Using a REPL vs. an IDE like you describe is the difference between a conversation and sending somebody a letter with instructions. This is more visible when we use more dynamic languages/runtimes than Java/JVM. Since the changes one can do and how they need to be done is not very advanced, the usefulness of a REPL is reduced.
- agentgt 9y agoI have a feeling given your screen name I'm talking to some who is equally biased as I am to Java :) > Using a REPL vs. an IDE like you describe is the difference between a conversation and sending somebody a letter with instructions. Hmmm an IDE is supposed to be a REPL and more. I mean you can go look up the definition from wikipedia. > This is more visible when we use more dynamic languages/runtimes than Java/JVM. Since the changes one can do and how they need to be done is not very advanced, the usefulness of a REPL is reduced. Yes I completely agree as I mentioned dynamic languages are far easier to modify at runtime. However for the case with Java it can be done with JRebel and various other tools. Furthermore going back to the whole conversation vs letter an IDE with a powerful debugger will let you evaluate expressions based on a state that is stuck... ie setting breakpoint (as well of course as investigating current variables and such). This is damn useful for dealing with a multithreaded environment. By the way make no mistake... I do love Lisp... I just think there are better things than traditional REPLs considering to your other point in another thread this stuff has existed since the 70s.
- lispm 9y ago> I have a feeling given your screen name I'm talking to some who is equally biased as I am to Java :) The main difference: I have a Lisp Machine at home. :-) > Hmmm an IDE is supposed to be a REPL and more. No, a Read Eval Print Loop came from Lisp in the early 60s. It originally means to read a data structure, treat it as code and evaluate it and print the result data structure. READ, EVAL, PRINT are actual functions in Lisp. This stuff executes in a LOOP and is enriched by all kinds of stuff. An IDE does not need to have a REPL. If it can interact with a running application (for example via a debugger), this might still not be a REPL. > However for the case with Java it can be done with JRebel and various other tools. Even JRebel can not do to a running JVM application what some Lisp implementations can do. Not near of that. > IDE with a powerful debugger will let you evaluate expressions based on a state that is stuck... ie setting breakpoint (as well of course as investigating current variables and such) This is pretty basic. > traditional REPLs Check out Symbolics Dynamic Windows and McCLIM on the Lisp side... Old demos from me: https://www.youtube.com/watch?v=VU_ELJjbnWM https://www.youtube.com/watch?v=VU_ELJjbnWM https://www.youtube.com/watch?v=9whxPd4haKc https://www.youtube.com/watch?v=9whxPd4haKc http://lispm.de/videos/lispm-3a.mov http://lispm.de/videos/lispm-3a.mov