March 15, 2020

Maybe Not


Rich Hickey, creator of Clojure



I call it my billion-dollar mistake. It was the invention of the null reference in 1965 - by Tony Hoare.

Where are nulls/options used?

  1. optional requirements (args)

    1. variadics and kwargs mitigate in Clojure

  2. conditional provision (returns)

  3. managing partial information (aggregates)

    1. not idiomatic in Clojure

Maps vs Records/Fields

  1. maps are (mathematical) functions!

  2. simplest functions in programming

    1. keyset → vals

    2. no code, no categories

What do we want?

  1. maximize schema reuse

    1. don’t want context-driven proliferation …​…​ yields more code, less reuse

  2. support symmetric request/response

    1. call partially filled in, get more filled in

  3. information-building pipelines

    1. many partial information increments


  1. Maps are the most fundamental functions in programming

  2. You can flow information through systems that they doesn’t know about and doesn’t care about it.

Tags: rich hickey