Dobre źródło Haskell do czytania i uczenia się od [zamknięte]

347

Jakie są programy open source, które używają Haskell i które można uznać za dobrej jakości nowoczesny Haskell ? Im większa baza kodu, tym lepiej.

Chcę uczyć się na podstawie ich kodu źródłowego. Wydaje mi się, że przekroczyłem już punkt uczenia się od małych przykładów kodu, które często są ezoteryczne i dla małego świata. Chcę zobaczyć, jak ustrukturyzowany jest kod, jak monady oddziałują, gdy dzieje się wiele rzeczy (logowanie, operacje we / wy, konfiguracja itp.).

luispedro
źródło
9
Mimo że to pytanie zostało zamknięte, użytkownicy mogą nadal edytować „zaakceptowaną” odpowiedź i dodawać do niej swoje odpowiedzi.
George Stocker

Odpowiedzi:

276

Co polecam

Czytaj kod od ludzi z różnych szkół w latach 90

Czytaj kod starych mistrzów niektórych osób (niepełna lista)

Pamiętaj, że ludzie tacy jak ja, Coutts, Mitchell, O'Sullivan, Lynagh itp. Nauczyli się naszego stylu Haskell od tych facetów.

Przeczytaj niektóre aplikacje

Don Stewart
źródło
98
Jest to typowa cholera haskell. Z php czytasz cześć światu i od razu piszesz słabe strony internetowe. Dzięki haskell nie ma górnej granicy tego, czego możesz się nauczyć, zawsze pojawiają się ciekawsze rozszerzenia i dokumenty. I właśnie teraz dowiedziałem się, że uniwersytety mają różne style i dlatego muszę to sprawdzić ... Kiedy mam czas na pisanie własnych projektów haskell? :)
Tarrasch,
39
Jakie są w skrócie cechy różnych stylów?
grautur
17
@grautur: A co ważniejsze, dlaczego się różnią? Czy były dobre powody techniczne?
Robert Massaioli,
10
Moim zdaniem różne style są wynikiem podziału geograficznego (a czasem filozoficznych nieporozumień) różnych szkół w erze przed wiki / internetem; oraz spuścizna języków proto-Haskell w każdej szkole wpływająca na styl. Wraz z pojawieniem się Hackage, wiki i github istnieje obecnie w dużej mierze homogeniczny styl Haskell (oparty na wykorzystaniu Glasgow i GHC).
Don Stewart,
15
Na CMU nauczyłem się semantyki denotacyjnej i wyprowadzania programów (systematyczne przekształcanie specyfikacji w implementacje), które miały ogromny wpływ na moje podejście do programowania. Te dwa tematy będą regularnie wyświetlane na moim blogu . Kiedy pracuję nad biblioteką oprogramowania, wybieram niewielką liczbę typów i zaczynam od głównego pytania: „Co to znaczy?”. Kiedy widzę kod niskiego poziomu, np. Imperatywny / IO, pytam: „Jaką abstrakcyjną abstrakcją jest ten kod implementacja i jak można tę implementację wyprowadzić z abstrakcji?”
Conal
61

XMonad to menedżer okien kafelkowych typu open source, pierwotnie luźno modelowany na dwm . Istnieje wiele rozszerzeń o różnej jakości, ale rdzeń jest zwarty i dobrze zorganizowany.

geekozaur
źródło
36
Rdzeń, fwiw, jest również niezwykle starannie zaprojektowany. Rdzeń rdzenia, StackSet, został zweryfikowany (tzn. Wstrzymuje właściwości QC) w przysłowie twierdzenia Coq. Jest to przykład patologicznej opieki projektowej.
Don Stewart
6
@don: „patologiczny” jak w „dobrym”, nie? :)
Francesco
8
Tak :-) Spencer i ja kładziemy większy nacisk na tworzenie rdzenia xmonad niż jakikolwiek projekt, w który byłem zaangażowany.
Don Stewart
18
  1. Haskell: Functional Programming with Types

    Joeri van Eekelen i in. | Wikibooks Opublikowano w 2007 r., 290 stron

  2. Learn You a Haskell for Great Good!

    Miran Lipovaca | LearnYouaHaskell.com Opublikowano w 2010 r., 176 stron

  3. Real World Haskell

    B. O'Sullivan, J. Goerzen, D. Stewart | O'Reilly Media, Inc. Opublikowano w 2008 r., 710 stron

  4. The Haskell Road to Logic, Maths and Programming

    Kees Doets, Jan van Eijck | Publikacje uczelni opublikowane w 2004 r., 449 stron

Soner Gönül
źródło
6
To są książki, a nie rzeczywiste pliki źródłowe projektu.
ses
17

Darcs to system zarządzania kodem źródłowym o otwartym kodzie źródłowym. To powinno dać ci dobry pomysł na Haskella.

Adithya Surampudi
źródło
16
Po dłuższej pracy na darcs nie poleciłbym jego kodu źródłowego. Nie używa tego, co uważam za dobre style Haskella. Sądzę, że jeśli jesteś ciekawy, co się dzieje, gdy małe bazy kodu stają się duże podczas wzrostu organicznego, to dobry przykład. Jeśli chcesz zobaczyć program o spójnym stylu pisania lub jasnych celach projektowych, szukałbym gdzie indziej.
Jason Dagit,
8

Kod źródłowy platformy internetowej Yesod jest dość złożony, dobrze przemyślany i dobrze napisany. Wiele się nauczysz z dołączonej do niego biblioteki trwałości.

MattoxBeckman
źródło
5

GHC to prawdopodobnie największy lub jeden z największych projektów napisanych w Haskell, który jest oprogramowaniem typu open source. Kiedy mówię największy, mam na myśli nie tylko rozmiar źródła, ale także wpływ, wykorzystanie, innowacje, solidność. GHC może cię wiele nauczyć na temat pisania Haskella.

danharaj
źródło