27 In functional languages (such as Haskell, Clojure, most of the other Lisps, probably Scala), all variables are immutable, and there's usually no built-in for or while loops. You have to use recursion and/or higher-order functions like map, filter, and reduce (all of which are defined recursively) to do things that you might otherwise use loops for.