Ref: Clojure from the ground up: Basic Types

What is a “type” anyway? Link to heading

A type is a group of values which work in the same way. It’s a property that some values share, which allows us to organize the world into sets of similar things.

I find this to be a very neat and simple way to think about “types” in general. Try to determine the appropriate type for a value based on how well it fits into a particular universe (programming language), and context (problem domain).

The definition of “type system” is particularly interesting. Also, the 2 dimensions of any type system - strong/weak, static/dynamic.

Some of the common programming constructs - symbols, lists, vectors, maps - provide a brief introduction to working with data.

As software engineers, we model the world by creating a particular representation of the problem in the program. Having a rich set of values at our disposal allows us to talk about complex problems. In Clojure, we compose data structures to form more complex values; to talk about bigger ideas.

Sweet! Looks extremely promising.