Aliases

Aliases are sooo simple! Too simple. All they do is they define a new name for an existing type:

alias Name = type

That's it!

The String type is an alias:

alias String = List Char

Therefore, String and List Char are perfect synonyms.

Of course, aliases can also contain type variables and have one interesting, although not very useful feature: they can be recursive. I haven't found a situation yet where a recursive alias would be needed, but I'll leave that up to you. ;)