data Bool = True | False ``` - 在``=``左邊的稱為 type constructor (上例中的``Bool``) - 在``=``右邊的稱為 data constructor 或 value constructor (上例中的``True`` 或 ``False``)
## 使用 type parameter 的時機
> We usually use type parameters when the type that's contained inside the data type's various value constructors isn't really that important for the type to work
稱為 type synonym。用來給一個既有type提供一個別名。什麼時候需要這樣大費周章為已經存在的type提供新的名稱?
> We introduce type synonyms either to describe what some existing type represents in our functions (and thus our type declarations become better documentation) or when something has a long-ish type that's repeated a lot (like ``[(String,String)]``) but represents something more specific in the context of our functions. > [LYAH](http://learnyouahaskell.com/making-our-own-types-and-typeclasses)