l2d data is defined by entities (aka types) and functions data is immutable entites describes the shapes of data (aka types) functions describes relations between entities functions take data as arguments functions return data