La matematica aveva bisogno di capire la teoria dietro il sistema di tipi di Haskell?

9

Recentemente, sono diventato profondamente interessato a Haskell.

Durante il tentativo di apprendere nuovi concetti (ad es. la parola chiave forall e monade ST ) e il sistema di tipo Haskell in generale, I si imbattono continuamente in concetti tratti dalla teoria delle categorie e lambda calcolo . Quindi, mi chiedo:

  1. Quali altri rami della matematica sono importanti per un strong comprensione del sistema di tipi di Haskell?

  2. Posso rinunciare a uno studio rigoroso di questi calcoli e concentrarmi invece su alcuni concetti pertinenti? (per esempio quantificatori nel calcolo lambda.) Se sì, quali concetti sono essenziali?

Spero di raccogliere presto Tipi e linguaggi di programmazione , tuttavia, per favore suggerisci eventuali risorse di lettura alternative ti senti appropriato.

    
posta Rob 03.10.2013 - 21:00
fonte

1 risposta

11

No, non è necessario prendere un libro sulla teoria delle categorie per capire Haskell.

Uso Haskell da alcuni anni, e ho raccolto alcune teorie di categoria per curiosità, non è davvero necessario. Da un lato, è bello vedere come tutte queste astrazioni si inseriscono nel "quadro generale", ma non sono andato "Oh mio Dio ho solo bisogno di fare di questo un profuncore dalla categoria Maybe a [] s e poi posso salvare la principessa! ".

Ora, a seconda di cosa stai facendo, la teoria del tipo di Haskell è in pericolo.

Se stai semplicemente imparando haskell non provare a comprendere ogni sfumatura del sistema di tipi . Per favore no, è come cercare di imparare prima la meta-programmazione dei template in C ++. I tipi di fantasia sono strumenti eccellenti, ma hanno una buona conoscenza della programmazione funzionale e comprendono il polimorfismo impredicativo.

Ora diciamo che dopo un anno o due di Haskell stai cercando di capire ogni sottile aspetto di come funziona il sistema di tipi di Haskell, quindi sì, alcuni tipi di teoria potrebbero essere utili.

Ti aiuterà a capire una parte della logica dietro a come funzionano le cose, in più è francamente una vera e propria branca dell'IMS informatica che vale la pena guardare. Puoi selezionare le parti che ti interessano e imparare ancora una quantità decente.

Per Haskell, guardando STLC, sistemi di tipo HM (Sistema F) e forse il tipo lambda cube (Haskell è System Fw iirc) e iso-ricorsivo. Tipi e linguaggi di programmazione sono una grande risorsa per iniziare e riguardare tutto questo e molto altro ancora.

Se vuoi davvero bere l'aiuto del freddo e scoprire che sei un teorico del tipo in erba, vai a colpire Agda o Coq. Questi dispongono di "tipi dipendenti", un passo avanti nel cubo lambda rispetto a Haskell. I tipi dipendenti consentono ai tipi dipendono in termini. Ciò significa che i tipi sono abbastanza potenti da dimostrare effettivamente i teoremi. Per i curiosi, googlando "l'isomorfismo di curry howard" dovrebbero portare alcuni risultati interessanti.

    
risposta data 04.10.2013 - 04:47
fonte