Functional programming languages (OCaml, Clojure, Haskell), are supposed to be somewhat like this.