- It is really easy to download, install, and be coding in 5 minutes.
- There's a nice GUI IDE, if that's your cup of tea. (Also I maintain racket-mode for Emacs.)
- It is "batteries included" (maybe not compared to Python (!), but definitely compared to most Schemes).
- You can write everything from command-line programs that launch quickly, to GUI apps, to web apps.
And particularly why I mention it here:
- You can explore many approaches mentioned in the OP: functional, gradual typing, object-oriented, lazy evaluation, datalog, and more. (Ultimately, Racket is "a programming-language programming language". Although you can ignore that level of abstraction and simply use it as a very nice lisp.)
It certainly is one way to learn Python better as you'll be working, indirectly, in its abstract syntax tree. You can do this in plain Python but the ast module is woefully under-documented and rarely used.
The ABC module, collections, frozenset. Basically anywhere we add custom types or generate new classes to instantiate.
frozenset is just a built-in immutable set type with a nice hashing algorithm for the kinds of workloads you'd expect. It's defined in Objects/setobject.c and is a nice read.
I was just rambling and I've used frozenset in metaprogramming code when constructing classes via decorators to implement Lattice types with decorated monotone/morphism methods.
Sorry for the confusion!
Original:
Another language they might have missed for use with SciPy/Python Notebook: Matlab/WolframAlpha/Octave.I think part of the point was to support other Open Source languages.