* Ruby's emphasis on writing DLS came from Lisp world, where this practice have been developed.
* Some of Python's elegant forms - with, lambda and various comprehensions - like this: return (x, y) or a = [3, 4, 5] came form Lisp.
* Lisp's macros are unmatched. Those of C/C++ are mere string substitution.
* REPL is Lisp's invention.
* Shadowing (re-binding) of variables and procedures used routinely - we don't need any special "dependency injection".
* Logically, everything is a pointer, so, technically, every "object" if a first-class citizen.
* Lisp is mostly-functional, so, in cases where you must have mutation, you just do it.
Enough for today.) Over-excitement is a vulnerability.)
* Ruby's emphasis on writing DLS came from Lisp world, where this practice have been developed.
* Some of Python's elegant forms - with, lambda and various comprehensions - like this: return (x, y) or a = [3, 4, 5] came form Lisp.
* Lisp's macros are unmatched. Those of C/C++ are mere string substitution.
* REPL is Lisp's invention.
* Shadowing (re-binding) of variables and procedures used routinely - we don't need any special "dependency injection".
* Logically, everything is a pointer, so, technically, every "object" if a first-class citizen.
* Lisp is mostly-functional, so, in cases where you must have mutation, you just do it.
Enough for today.) Over-excitement is a vulnerability.)