Boa fonte Haskell para ler e aprender [fechado]

347

Quais são alguns programas de código aberto que usam Haskell e que podem ser considerados Haskell modernos de boa qualidade ? Quanto maior a base de código, melhor.

Eu quero aprender com o código fonte deles. Sinto que já passei do ponto de aprender com pequenos exemplos de código, que costumam ser esotéricos e de mundo pequeno. Quero ver como o código é estruturado, como as mônadas interagem quando você tem muitas coisas acontecendo (registro, E / S, configuração etc.).

luispedro
fonte
9
Mesmo que essa pergunta tenha sido encerrada, os usuários ainda podem editar a resposta 'aceita' e adicionar sua resposta.
George Stocker 04/02

Respostas:

276

O que eu recomendo.

Leia o código de pessoas de diferentes escolas de pós-graduação nos anos 90

Leia o código dos antigos mestres de certas pessoas (lista incompleta)

Note que pessoas como eu, Coutts, Mitchell, O'Sullivan, Lynagh, etc. aprenderam nosso estilo Haskell com esses caras.

Leia algumas aplicações

Don Stewart
fonte
98
Isso é típico haskell damit. Com o php, você lê um olá mundo e continua escrevendo sites ruins. Com o haskell, não há limite superior para o que você pode aprender, sempre há extensões e documentos interessantes. E agora eu aprendi que as universidades têm estilos diferentes e, portanto, devo verificar tudo isso ... Quando tenho tempo para escrever meus próprios projetos de haskell? :)
Tarrasch 18/06
39
Quais são, resumidamente, as características dos diferentes estilos?
grautur
17
@grautur: E, mais importante, por que eles são diferentes? Houve boas razões técnicas?
precisa
10
Na minha opinião, os diferentes estilos são o resultado da separação geográfica (e às vezes de discordâncias filosóficas) das diferentes escolas na era pré-wiki / internet; e o legado das línguas proto-Haskell em cada escola influenciando o estilo. Com o surgimento de Hackage, wikis e github, existe agora um estilo Haskell homogêneo (baseado no uso de Glasgow e GHC).
Don Stewart
15
Na CMU, aprendi semântica denotacional e derivação de programa (transformação sistemática de especificações em implementações), as quais tiveram um impacto profundo na minha abordagem de programação. Você verá esses dois temas regularmente no meu blog . Quando trabalho em uma biblioteca de software, escolho um pequeno número de tipos e começo com uma pergunta central: "O que isso significa?". Quando vejo código de baixo nível, por exemplo, imperativo / IO, pergunto "De que abstração denotativa esse código é uma implementação e como essa implementação pode ser derivada da abstração?"
Conal 22/06
61

O XMonad é um gerenciador de janelas lado a lado de código aberto, originalmente modelado livremente no dwm . Existem muitas extensões, de qualidade variável, mas o núcleo é compacto e bem organizado.

geekosaur
fonte
36
O núcleo, fwiw, também é extremamente projetado com cuidado. O núcleo do núcleo, StackSet, foi verificado (ou seja, as propriedades do QC são mantidas) no comprovador do teorema de Coq. É um exemplo de atendimento de desenho patológico.
Don Stewart
6
@don: "patológico" como em "bom", não? :)
Francesco
8
Sim :-) Spencer e eu coloquei mais cuidado na elaboração do núcleo xmonad que qualquer projeto que eu estive envolvido.
Don Stewart
18
  1. Haskell: Functional Programming with Types

    Joeri van Eekelen, et al. | Wikibooks Publicado em 2007, 290 páginas

  2. Learn You a Haskell for Great Good!

    Miran Lipovaca LearnYouaHaskell.com Publicado em 2010, 176 páginas

  3. Real World Haskell

    B. O'Sullivan, J. Goerzen, D. Stewart | O'Reilly Media, Inc. Publicado em 2008, 710 páginas

  4. The Haskell Road to Logic, Maths and Programming

    Jan Kees Doets, Jan van Eijck | Publicações de faculdade Publicado em 2004, 449 páginas

Soner Gönül
fonte
6
Estes são livros, não arquivos de origem do projeto real.
ses
17

O Darcs é um sistema de gerenciamento de código-fonte de código aberto. Deve dar uma boa ideia para Haskell.

Adithya Surampudi
fonte
16
Tendo trabalhado bastante em darcs, eu realmente não recomendaria o código fonte. Ele não usa o que eu consideraria bons estilos de Haskell. Acho que se você está curioso para saber o que acontece quando pequenas bases de código aumentam enquanto crescem organicamente, é um bom exemplo. Se você deseja ver um programa com um estilo de escrita consistente ou objetivos claros de design, eu procuraria em outro lugar.
Jason Dagit
8

O código fonte para a plataforma web Yesod é bastante complexo, bem pensado e bem escrito. Você aprenderá muito com a biblioteca de persistência que vem com ela também.

MattoxBeckman
fonte
7

Se você se preocupa com programação na Web, eu recomendaria o projeto lpaste de Chris Done .

Victor Nazarov
fonte
Talvez este github.com/lpaste/lambda-paste ?
TobiMcNamobi 7/11
5

O GHC é provavelmente o maior ou um dos maiores projetos escritos em Haskell, de código aberto. Quando digo o maior, não me refiro apenas ao tamanho da fonte, mas também ao impacto, uso, inovação e robustez. O GHC pode ensinar muito sobre escrever Haskell.

danharaj
fonte