Por que há um construtor de valor além do construtor de tipo no Haskell?

Sou recém-chegado a Haskell e atualmente estou passando pelo Real World Haskell. O livro diz que o construtor de tipo é usado apenas na assinatura de tipo, enquanto o construtor de valor é usado no código real. Também dá um exemplo de uma declaração para mostrar que os nomes de ambos são independentes uns dos outros. Por que dois construtores são necessários em primeiro lugar, se apenas um deles for usado em código real? Como não usaríamos o construtor de tipos no código real, qual é a finalidade do construtor de tipos?

questionAnswers(3)

yourAnswerToTheQuestion