Boxed Type

values of that type are represented by a pointer to a heap object.

Unboxed Type

represented by the value itself, no pointers or heap allocation are involved.

Unlifted Type