That really bugs me with a great many popular languages. There's a REPL, but the libraries and tooling don't really embrace it.
That really bugs me with a great many popular languages. There's a REPL, but the libraries and tooling don't really embrace it.
But it's difficult with Python as soon as you try to do anything beyond a single module. CL and Clojure have proper packages and namespaces so it works fine. But in Python you're limited to working on the context of a single module. If you modify a module that was imported then you have to restart the REPL because you can't reload modules. It just doesn't work.
In CL I would just load the entire system then eval whatever part I want to. From that point I would never not have the current version of the system completely loaded into the running image. Much the same with emacs itself. It is a running image of your emacs lisp system and you can just modify it and eval as-you-go. Does any other language even come close to this?
Smalltalk
Smalltalk, it is an experience, given that language, IDE and runtime/OS are all blended together, while Java can only do so much, even with the more advanced IDEs.
Clojure might be a reaction to C++/Java/C# OOP style, but it surely adopts Common Lisp OOP style.
I think it's worth learning, even if you never use it.
This is so frustrating, the Python REPL does some kind of module caching, and I haven't found how to disable it. When I asked on IRC a few years ago, I was told that I was using the REPL for the wrong purpose.
Here is the option I have in my profile file. You can run this command inside the ipython session as well:
%autoreload 2
The times I have seen auto-reload fail is when there is lot of class creation magic going on or while dealing with global connection objects which sql alchemy might be creating. But, other than that it works very nicely.
https://m.mediawiki.org/wiki/Special:MyLanguage/Manual:Shell...
Based on my experience with that I’d definitely add a shell utility to any large application I was working on.