O que o símbolo = faz no haskell?

5

Sou relativamente novo no aprendizado de haskell, então realmente não entendo o sistema de digitação quando se trata de restrições. Existe esse estranho símbolo => que não faz sentido para mim. É na verdade apenas sintaxe? Ou é um construtor de tipo? Não tenho certeza. Abaixo estão meus pensamentos sobre isso. Alguém pode esclarecer o que exatamente significa => no haskell?

No haskell, (->) é um construtor de tipo, com o tipo * -> * -> * . Isso é bom, porque deixa claro por que, por exemplo, Double -> Bool tem o tipo * . Mas então me perguntei sobre tipos como (Integral a) => a -> a . Claramente, isso tem o tipo * e a -> a tem o tipo * (eu acho). Como Integral tem o tipo * -> Constraint , Integral a deve ter o tipo Constraint . Então, eu concluo que (=>) tem restrição de tipo - > * - > * No entanto, quando digito :k (=>) no GHCi, recebo um erro ("erro de análise na entrada = >")! Isso parece indicar que (=>) não é um construtor de tipo. Então o que é isso?

O GHCi também me diz que (Show List, Read List) tem o tipo Constraint , mas que (,) tem o tipo * -> * -> * , o que me deixa muito confuso. O (,) tem duas definições? São restrições algumas mágicas mágicas que eu simplesmente não entendo?

Qualquer ajuda é muito apreciada.

    
por diracdeltafunk 15.09.2014 / 21:20
fonte

1 resposta

7

O = > está lá apenas como um delimitador entre contexto e tipo quando você escreve uma assinatura de tipo. Eles nem são salvos depois da compilação. Você pode vê-lo aqui: link

    
por 15.09.2014 / 21:37
fonte

Tags