This Old Lisp
After 20 years of programming[1], I’ve gotten to a point in my life where an advanced type system (with strong <i>static</i> types, no nulls — optionals instead, type inference, type refinement, etc) is absolutely mandatory for any language I’ll pick (when I have the freedom to choose). I’ve heard that there are libraries that tack types onto LISP —  but how good are they?<p>LISP code I’ve seen anywhere has always been without types (ie dynamically typed). No LISP dialect that I’m aware of has prioritized or talked about or emphasized type checking. Is this something that’s even big on the radar of the LISP implementors and the LISP community at large?<p>I’ve been burned too many times working on large (100k+ LOC) dynamically typed codebases that I really never want to work with such a codebase again.<p>A sincere question: Besides its homoiconic syntax and probably the best implementation of macros — what does LISP offer over a modern programming language with a sophisticated type system – even, for instance, a language as old as OCaml?<p>Peter Norvig has web page called “<i>Is Lisp Still Unique? Or at Least Different?</i>” that was last updated <i>back in 2002</i> where he talks about the unique features LISP offers, and how other languages are catching up: <a href="http:&#x2F;&#x2F;norvig.com&#x2F;Lisp-retro.html" rel="nofollow">http:&#x2F;&#x2F;norvig.com&#x2F;Lisp-retro.html</a> Modern languages of today offer the features that made LISP unique and superior <i>in its heyday</i>, and languages with powerful type systems offer a huge advantage that LISP never has had.<p>[1] I started programming in 1998, when I was 8 years old. I’ve developed software professionally for a far shorter period.