Che cosa fa il simbolo = in haskell?

5

Sono abbastanza nuovo nell'apprendimento di haskell, quindi non capisco il sistema di battitura quando si tratta di vincoli. C'è questo strano simbolo => che non ha senso per me. In realtà è solo sintassi? O è un costruttore di tipi? Non ne sono sicuro. Di seguito sono i miei pensieri a riguardo. Qualcuno può chiarire che cosa esattamente => significa in haskell?

In haskell, (->) è un costruttore di tipi, con il tipo * -> * -> * . Questo è bello, perché chiarisce perché, ad esempio, Double -> Bool ha tipo * . Ma poi mi sono chiesto tipi come (Integral a) => a -> a . Chiaramente, questo tipo ha * , e a -> a ha tipo * (credo). Poiché Integral ha tipo * -> Constraint , Integral a deve avere il tipo Constraint . Quindi, concludo che (=>) ha un vincolo di tipo - > * - > *. Tuttavia, quando digito :k (=>) in GHCi, viene visualizzato un errore ("errore di analisi su input = >")! Questo sembra indicare che (=>) non è un costruttore di tipi. Allora cos'è?

GHCi mi dice anche che (Show List, Read List) ha tipo Constraint , ma che (,) ha tipo * -> * -> * , il che mi rende molto confuso. (,) ha due definizioni? I vincoli sono magici hocus-pocus che non capisco?

Qualsiasi aiuto è molto apprezzato.

    
posta diracdeltafunk 15.09.2014 - 21:20
fonte

1 risposta

7

The = > è solo lì come delimitatore tra contesto e tipo quando scrivi una firma di tipo. Non vengono nemmeno salvati dopo la compilazione. Potete vederlo qui: link

    
risposta data 15.09.2014 - 21:37
fonte

Leggi altre domande sui tag