Гарне джерело Haskell для читання та навчання з [закритого]


347

Які є програми з відкритим кодом, які використовують Haskell і які можна вважати якісними сучасними Haskell ? Чим більша база коду, тим краще.

Я хочу дізнатися їх вихідний код. Я відчуваю, що минув точку навчання з прикладів невеликих кодів, які часто ставляться до езотерики та малого світу. Я хочу побачити, як структурований код, як взаємодіють монади, коли у вас відбувається багато речей (ведення журналів, введення / виведення, конфігурація тощо).


9
Незважаючи на те, що це питання було закрито, користувачі все ще можуть редагувати "прийняту" відповідь та додавати відповідь на неї.
Джордж Стокер

Відповіді:


276

Що я рекомендую.

Читайте код людей з різних шкіл у 90-х роках

Прочитайте код старих майстрів певних людей (неповний список)

Зауважте, що такі, як я, Коттс, Мітчелл, О'Салліван, Лінаг тощо, дізналися наш стиль Haskell від цих хлопців.

Прочитайте деякі програми


98
Це типовий даміт Хаскелл. З php ви читаєте привіт світ і переходите прямо до написання поганих веб-сайтів. У haskell немає верхньої межі того, про що ви можете дізнатися, завжди є більш цікаві розширення та документи, що з’являються. І тільки що я дізнався, що університети мають різні стилі, і для цього я повинен перевірити все це ... Коли я маю час на власне написання власних проектів haskell? :)
Тарраш

39
Які, коротко, характеристики різних стилів?
гратур

17
@grautur: І, що ще важливіше, чому вони відрізняються? Чи були вагомі технічні причини?
Роберт Массайолі

10
На мій погляд, різні стилі є результатом географічного розмежування (а іноді і філософських розбіжностей) різних шкіл у до-вікі / Інтернет-епоху; і спадщина мов прото-хаскелла в кожній школі, що впливають на стиль. З появою Hackage, wikis та github зараз значною мірою є однорідний стиль Haskell (заснований на використанні Глазго та GHC).
Дон Стюарт

15
У КМУ я вивчив денотаційну семантику та похідність програми (систематичне перетворення специфікацій у реалізацію), які обоє мали глибокий вплив на мій підхід до програмування. Ці дві теми ви будете регулярно бачити в моєму блозі . Працюючи над бібліотекою програмного забезпечення, я вибираю невелику кількість типів і починаю з центрального питання: "Що це означає?". Коли я бачу код низького рівня, наприклад, імператив / IO, я запитую "З якої денотативної абстракції цей код є реалізацією, і як ця реалізація може бути отримана з абстракції?"
Конал

61

XMonad - це менеджер вікон з відкритим вихідним кодом, спочатку вільно моделюється на dwm . Існує безліч розширень різної якості, але серцевина компактна і добре організована.


37
Ядро, fwiw, також надзвичайно ретельно розроблене. Основа ядра, StackSet, була перевірена (тобто дотримуються властивості QC) у доказі теореми Кок. Це приклад догляду за патологічним дизайном.
Дон Стюарт

7
@don: "патологічний", як у "доброму", ні? :)
Франческо

8
Так :-) Ми з Спенсером приділяємо більше уваги розробці ядра xmonad, ніж будь-який проект, в якому я брав участь.
Дон Стюарт,

18
  1. Haskell: Functional Programming with Types

    Joeri van Eekelen та ін. | Вікікниги Опубліковано у 2007 році, 290 сторінок

  2. Learn You a Haskell for Great Good!

    Міран Ліповака | LearnYouaHaskell.com Опубліковано у 2010 році, 176 сторінок

  3. Real World Haskell

    Б. О'Салліван, Дж. Герцен, Д. Стюарт | O'Reilly Media, Inc. Опубліковано у 2008 році, 710 сторінок

  4. The Haskell Road to Logic, Maths and Programming

    Кіс Дотс, Ян ван Ейк | Публікації коледжу Опубліковано у 2004 р., 449 сторінок


6
Це книги, а не реальні вихідні файли проекту.
SES

17

Darcs - це система управління відкритим кодом та вихідним кодом. Це має дати вам гарну ідею для Haskell.


16
Попрацювавши над Darcs досить трохи, я б не дуже рекомендував його вихідний код. Він не використовує те, що я вважав би гарними стилями Haskell. Я думаю, якщо вам цікаво, що трапляється, коли невеликі бази коду стають великими при органічному зростанні, то це хороший приклад. Якщо ви хочете побачити програму з послідовним стилем написання або чіткими цілями дизайну, я б заглянув в іншому місці.
Джейсон Дагіт

8

Вихідний код веб-платформи Yesod досить складний, продуманий і добре написаний. Ви багато чого навчитеся з бібліотеки наполегливості, яка поставляється разом із нею.



5

GHC - це, мабуть, найбільший або один із найбільших проектів, написаний в Haskell, який є відкритим кодом. Коли я кажу найбільше, я маю на увазі не лише розмір джерела, а й вплив, використання, інновації, надійність. GHC може навчити вас багато чого з написання Haskell.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.