Buona fonte Haskell per leggere e imparare da [chiuso]


347

Quali sono alcuni programmi open source che usano Haskell e possono essere considerati Haskell moderni di buona qualità ? Maggiore è la base di codice, meglio è.

Voglio imparare dal loro codice sorgente. Sento di aver passato il punto di apprendere da piccoli esempi di codice, che spesso sono esoterici e di piccoli mondi. Voglio vedere come è strutturato il codice, come interagiscono le monadi quando ci sono molte cose in corso (registrazione, I / O, configurazione, ecc.).


9
Anche se questa domanda è stata chiusa, gli utenti possono comunque modificare la risposta "accettata" e aggiungere la loro risposta.
George Stocker,

Risposte:


276

Quello che raccomando.

Leggi il codice di persone di diverse scuole elementari negli anni '90

Leggi il codice dei vecchi maestri certe persone (elenco incompleto)

Nota che persone come me, Coutts, Mitchell, O'Sullivan, Lynagh, ecc. Hanno imparato il nostro stile Haskell da questi ragazzi.

Leggi alcune applicazioni


98
Questo è un tipico haskell dannato. Con php leggi un ciao mondo e vai dritto a scrivere siti Web poveri. Con haskell, non c'è limite superiore a ciò che puoi imparare, ci sono sempre estensioni e documenti sempre più interessanti. E proprio ora ho imparato che le università hanno stili diversi, e quindi devo dare un'occhiata a tutti quelli ... Quando ho tempo per scrivere progetti haskell per conto mio? :)
Tarrasch,

39
Quali sono, in breve, le caratteristiche dei diversi stili?
Grautur,

17
@grautur: E, soprattutto, perché sono diversi? C'erano buone ragioni tecniche?
Robert Massaioli,

10
A mio avviso, i diversi stili sono il risultato della separazione geografica (e talvolta dei disaccordi filosofici) delle diverse scuole nell'era pre-wiki / internet; e l'eredità delle lingue proto-Haskell in ogni scuola che influenza lo stile. Con l'emergere di Hackage, wiki e github ora c'è in gran parte uno stile Haskell omogeneo (basato sull'uso di Glasgow e GHC).
Don Stewart,

15
Alla CMU ho appreso la semantica denotazionale e la derivazione del programma (trasformazione sistematica delle specifiche in implementazioni), entrambe le quali hanno avuto un profondo impatto sul mio approccio alla programmazione. Vedrai questi due temi regolarmente sul mio blog . Quando lavoro su una libreria di software, scelgo un piccolo numero di tipi e inizio con una domanda centrale: "Che cosa significa?". Quando vedo un codice di basso livello, ad es. Imperativo / IO, chiedo "Di quale astrazione denotativa questo codice è un'implementazione, e come potrebbe derivare tale implementazione dall'astrazione?"
Conal,

61

XMonad è un gestore di finestre di piastrellatura open source, originariamente modellato in modo approssimativo su dwm . Ci sono molte estensioni, di qualità variabile, ma il nucleo è compatto e ben organizzato.


36
Anche il core, in seguito, è stato progettato con estrema attenzione. Il core del core, StackSet, è stato verificato (vale a dire le proprietà QC) nel prover del teorema di Coq. È un esempio di cura del design patologico.
Don Stewart,

6
@don: "patologico" come in "buono", no? :)
Francesco,

8
Sì :-) Spencer e io dedichiamo più attenzione alla realizzazione del core di Xmonad rispetto a qualsiasi progetto in cui sono stato coinvolto.
Don Stewart,

18
  1. Haskell: Functional Programming with Types

    Joeri van Eekelen, et al. | Wikibooks pubblicato nel 2007, 290 pagine

  2. Learn You a Haskell for Great Good!

    Miran Lipovaca | LearnYouaHaskell.com pubblicato nel 2010, 176 pagine

  3. Real World Haskell

    B. O'Sullivan, J. Goerzen, D. Stewart | O'Reilly Media, Inc. Pubblicato nel 2008, 710 pagine

  4. The Haskell Road to Logic, Maths and Programming

    Kees Doets, Jan van Eijck | Pubblicazioni universitarie pubblicate nel 2004, 449 pagine


6
Questi sono libri, non file di origine del progetto reale.
ses

17

Darcs è un sistema open source di gestione del codice sorgente. Dovrebbe darti una bella idea per Haskell.


16
Avendo lavorato un po 'su Darcs, non consiglierei davvero il suo codice sorgente. Non usa ciò che considererei buoni stili Haskell. Immagino che se sei curioso di sapere cosa succede quando le piccole basi di codice diventano grandi mentre crescono organicamente, allora è un buon esempio. Se vuoi vedere un programma con uno stile di scrittura coerente o chiari obiettivi di design, guarderei altrove.
Jason Dagit,



5

GHC è probabilmente il più grande o uno dei più grandi progetti scritti in Haskell che è open source. Quando dico più grande, non intendo solo in termini di dimensioni della fonte, ma anche impatto, uso, innovazione, robustezza. GHC può insegnarti molto sulla scrittura di Haskell.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.