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

Велика подяка нашим спонсорам! Завдяки ним маємо сплату оренди та подальший розвиток івентів від KyivLambda. Golden sponsors: Grammarly, IOHK. Silver sponsors: Attendify, Preply, Takeoff.

sponsors

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

Принципи

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

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

Очікування

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

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

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

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

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

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

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

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

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

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

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

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

Формат

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

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

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

Реєстрація

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

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

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

Розклад

Chapters mentioned are meant to be read by the week’s meeting with exercises done.

Week 1. Introduction. Lambda calculus.

Week 2. Getting started with Haskell.

Week 3. Basic datatypes.

Week 4. Types and Typeclasses.

Week 5. Functional patterns. Working with recursion.

Week 6. Lists and folding lists.

Week 7. Lists and folding lists (pt 2).

Week 8. Algebraic datatypes.

Week 9. Algebraic datatypes (pt 2).

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

Week 11. Midpoint review. Testing with QuickCheck.

Week 12. Monoid and Semigroup.

Week 13. Functor.

Week 14. Applicative.

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

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

Week 17. Traversable

Week 18. Reader, State

Week 19. Parser combinators, part 1

Week 20. Parser combinators, part 2

Week 21. Composing types

Week 22. Monad transformers

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

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