Immutable value type that automatically implements equality (==, !=), hashcode computation (toHash), and stringification (toString). The purpose of this struct is act similarly to record types in functional programming languages like OCaml and Haskell.
Provides functionality for easily creating immutable record types.