Група з вивчення мови Хаскель
Branch: master
Clone or download
Pull request Compare This branch is 11 commits ahead, 41 commits behind sjsyrek:master.
Latest commit 0e8c2c2 Mar 7, 2018
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
images Make initial commit Sep 7, 2017
resources Make initial commit Sep 7, 2017
README.md Update exercise info Mar 7, 2018
sponsors.png Add sponsors.png Oct 18, 2017

README.md

Група з вивчення мови Хаскель

Велика подяка нашим спонсорам! Завдяки ним маємо сплату оренди та подальший розвиток івентів від Kievfprog. Gold sponsor: Grammarly. Silver sponsor: Intetics.

sponsors

Принципи

Ми працюватимемо за книгою Haskell Programming from First Principles (aka the "Haskell Book") авторства Крістофера Алена та Джулі Моронукі. Єдиними передумовами для участі є ця книга, комп’ютер, знання англійської (на рівні читання простої мови зі словником), та ви. Вільний розум також був би в нагоді. Жодного попереднього досвіду з Хаскелем, функційним програмуванням, або програмуванням в цілому не потрібно.

Для підготовки до вашого першого візиту, будь ласка, зробіть наступне:

  • Доєднайтесь до Slack-спільноти KyivHaskell. Всі анонси, що стосуються цієї групи з вивчення будуть надіслані через Meetup та Slack. В Slack-чаті KyivHaskell, шукайте канал #haskell-study-group.

  • Придбайте свою особисту копію книги (доступні знижки: дивіться нижче). Вам знадобиться власна копія на вашому комп’ютері задля того, щоби працювати із PDF-контентом та терміналом, відкритими поруч. Цю книжку було незалежно досліджено, написано та видано двома Хаскель-розробниками, що працювали в свій вільний час для підтримки навчання функційному програмуванню. Будучи членом стійкої та підтримувальної спільноти, ми знаємо, що ви занадто віддані духу благої дії "позичити" чиюсь копію. Хочемо зазначити, що автори набирали цю книгу в LaTeX! Поважайте їхню роботу.

  • Встановіть Stack, інструмент для управління Хаскель-проектами. Якщо ви знайомі із пакетними менеджерами типу npm, pip, та apt, Stack схожий на них. Вам не потрібно приходити на зустріч експертом, але просимо вивчити основи. Якщо ви, все ж, хочете все знати, ви можете подивитись дане відео. Найголовніше: що би ви не робили, не встановлюйте Haskell Platform.

  • Налаштуйте проектне середовище для свого практикування в кодингу, також ознайомтесь із GHC та GHCi. Не потрібно робити набагато більше, ніж створити директорію для вашого коду та впевнитись, що ви вмієте запускати компілятор GHC на ваших першокодах, та GHCi, коли вам потрібен REPL. Ми пропонуємо створювати окремі теки для кожного розділу, але ви вільні робити як вам здається зручнішим. Не очікуйте на зустрічі робочий WiFi, хоч ми й будемо докладати зусиль, аби він був доступним.

Очікування

Очікується, що учасники групи з вивчення зможуть встановити та дотримуватись принципу самовідповідальності. Це тягне за собою зміцнення завдяки нормам підтримувального одне одного та ретельно працівного середовища. Щотижня ви маєте виконати наступні задачі:

  • прочитати весь матеріал
  • набрати весь код
  • спробувати виконати всі завдання
  • зустрітись із партнером/партнеркою із вивчення задля обговорення вашої роботи
  • відвідати групову зустріч

Ці очікування було встановлено не для того, аби зробити ваше життя жалюгідним, але щоби підготувати базу вашого успіху. Якщо ви дійсно хочете вивчити Хаскель, ключ, як завжди, лежить в постійності та послідовності. Оскільки в цій групі ми вивчатимемо Хаскель разом, неодмінною є ваша самостійна праця над кожним розділом перед зустріччю, щоби ви прийшли на неї підготовленими, знаючи наперед, де саме ви потребуєте допомоги та що ви розумієте достатньо добре, аби допомогти іншим. Якщо ви застрягли із проблемою — продовжуйте рухатись, але не пропускайте вправи повністю.

Ще раз наголошуємо: не пропускайте вправи!

Якщо ви зовсім новачок у програмуванні або за якоїсь причини маєте проблеми із встановленням Хаскеля на вашому комп’ютері, не переживайте! Приходьте в групу з вивчення, ми вам допоможемо розібратись. На щастя, вам навіть не потрібен комп’ютер, аби працювати із першим розділом: тільки ручка, листок, та терпіння. Тому впевніться, що ви зробили хоча б це, навіть якщо потребуєте технічної допомоги.

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

Норми поведінки

Беручи участь в цій групі з вивчення, ви погоджуєтесь із наступними нормами:

Ви придбаєте свою власну копію книги Haskell Book. Будь-кого запідозреного/запідозрену у використанні нелегальної копії буде усунено з групи негайно.

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

Ви докладете всіх зусиль, аби взяти участь у щотижневій зустрічі. Кількість місць обмежена, тому якщо ви не впевнені в можливості регулярно долучатись, не реєструйтесь. Учасники, що постійно пропускають мітинги, або відмічаються як RSVP, не з’явившись, будуть змушені покинути групу. Якщо ви не можете попасти на мітинг, приберіть відмітку участі (RSVP) щонайшвидше.

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

На сайті Recurse Center є корисний список соціальних правил, із яким ми рекомендуємо ознайомлення перед відвідуванням наших зустрічей.

Формат

Ми працюватимемо крізь розділи 1-18 книги Haskell Book протягом 12 тижнів, зустрічаючись приблизно на дві години щотижня. Ми можемо розширити список зустрічей для покриття наступних розділів, якщо матимемо достатньо ентузіазму та доступність організаторів.

Тим не менш, це не курси, тому не очікуйте формату лекцій. Навзамін, ви матимете можливість переглянути свою роботу та обговорити концепції та вправи, із якими ви мали проблеми, коли працювали з книгою власноруч.

Ви вільні вибирати зручний вам режим роботи з книгою, плануючи роботу як завгодно близько до щотижневих зустрічей, аби ви тільки могли підтримувати власний ритм. Тому слід зазначити, що якщо життєві події стануть перешкодою, так тому і бути, але намагайтесь якомога швидше наздогнати пропущене, та не пропускайте жодних матеріалів, бо кожен наступний розділ ґрунтується на попередніх. Ми завжди можемо обговорити вправи на Slack-каналі, але просимо втриматись від публікації ваших рішень (в тому числі на GitHub).

Реєстрація

Всі зустрічі буде оголошено на Meetup та Slack. Ви маєте відмітитись як учасник (RSVP) окремо на кожну зустріч, оскільки кількість місць обмежена. Якщо ви не можете відвідати зустріч через нестачу місць, будь ласка, працюйте самостійно та приходьте на наступну зустріч. Не відмічайтесь (RSVP), якщо не можете прийти. Подібні вчинки будуть приводити до вилучення можливості відвідувати послідущі зустрічі.

Слайди та інші ресурси

Дивіться суб-теку resources в цьому репозиторії для презентаційних слайдів, бонусних вправ, або інших матеріалів, використаних під час зустрічей групи. Якщо ви маєте щось, що б ви хотіли додати, будь ласка, зробіть pull request.

Розклад

Week 1. Introduction. Lambda calculus.

  • Haskell Book, Chapter 1

Week 2. Getting started with Haskell.

  • Chapters 2 and 3

Week 3. Basic datatypes.

  • Review chapters 2 and 3
  • Chapters 4 and 5

Week 4. Types and Typeclasses.

  • Review chapters 4 and 5
  • Chapter 6

Week 5. Functional patterns. Working with recursion.

  • Review chapter 6
  • Chapters 7 and 8

Week 6. Lists and folding lists.

  • Review chapters 7 and 8
  • Chapters 9 and 10

Week 7. Algebraic datatypes.

  • Review chapters 9 and 10
  • Chapters 11 and 12

Week 8. Peer-to-peer review. Projects and Modules.

  • Post solutions to the phone exercise from chapter 11, review at least 2 of your peers.
  • Review chapters 11 and 12
  • Chapter 13

Week 9. Midpoint review. Testing with QuickCheck.

  • Review chapters 2-12
  • Chapter 14

Week 10. Monoid and Semigroup.

  • Chapter 15

Week 11. Functor.

  • Review Chapter 15
  • Chapter 16

Week 12. Applicative.

  • Review chapter 16
  • Chapter 17

Week 13. Monad. How to apply structure to your code. Conclusion.

  • Review chapter 17
  • Chapter 18
  • Read Chapter 19 on your own
  • General review and look ahead

Week 14. Foldable. (We decided to move on)

  • Chapter 20

Week 15. Traversable

  • Chapter 21

Week 16. Reader, State

  • Chapter 22
  • Chapter 23

Week 17. Parser combinators, part 1

  • Chapter 24. Up until "24.8 Character and token parsers"

Week 18. Parser combinators, part 2

  • Chapter 24. "24.8 Character and token parsers" and further
  • Only do exercises 1-5

Week 19. Composing types

  • Chapter 25
  • Do exercise 5 from previous chapter peer to peer

Week 20. Monad transformers

  • Chapter 26

Дні зустрічей, час, та місце проведення може змінюватись в залежності від доступності місця.

Для деталей щодо конкретної зустрічі, дивіться сторінку на Meetup.