I tried Clojure, but immediately got the impression that the run-time type-system is ill-designed. I cannot recall the details, but I can remember odd things like different run-time types used for empty lists than for non-empty lists. A simple program doing a &quot;switch&quot; on some run-time types turned out to be really cluttered. But of course, there&#x27;s always the possibility that I was doing something wrong :)