¿Por qué hay un constructor de valores además del constructor de tipos en Haskell?

Soy un recién llegado a Haskell y actualmente estoy pasando por Real World Haskell. El libro dice que el constructor de tipo se usa solo en la firma de tipo mientras que el constructor de valor se usa en el código real. También da un ejemplo de una declaración para mostrar que los nombres de ambos son independientes entre sí. ¿Por qué se necesitan dos constructores en primer lugar, si solo uno de ellos se usa en el código real? Dado que no utilizaríamos el constructor de tipos en el código real, ¿para qué sirve el constructor de tipos?

Respuestas a la pregunta(3)

Su respuesta a la pregunta