За да участвате в курса, трябва да се свържете с мен, за да предприема действия:
- включване в "екип" в Microsoft Teams, в който да мога да ви сръчквам за обявления
- взимане на данни нужни за подготовка за домашни и сформиране на таблица с оценки
Това се случва, като пишете на мен(Георги Людмилов Любенов) лично съобщение в Teams в следния формат:
<фн>,<две имена на кирилица>,<github потребителско име>
Курсът има канали във СУ Teams-а. В него ще се случват
- обявления
- групов чат
- отговори на въпроси (или публично или в лични съобщения)
- споделяне на интересни неща
За да можете да използвате Teams, трябва да си направите акаунт тук.
Ако някой няма възможност да си направи акаунт, моля да ми пише мейл.
Ето и покана за Team-а - https://teams.microsoft.com/l/team/19%3aYvIdww3GiebTFZLvN9UsWrr8aVVsJm_zAWupFNTVJcU1%40thread.tacv2/conversations?groupId=5bdcc12f-3b25-4e1c-9e32-7b84a8e9d1f5&tenantId=9d05c5fb-e448-4700-8a58-e15b93c84ea9
- Mail - godzbanebane@gmail.com
- Teams - Георги Людмилов Любенов
- Twitter - @googleson78
Курсът се взима с домашни и проект.
Домашните не са задължителни, проектът е.
Имането на проект не гарантира взимането на предмета. Пример за кога би се случило това е ако не напишете нито едно домашно и изберете да правите проект, който дава минималния брой точки.
Домашните ще са между 3 и 7 на брой.
Домашните ще се предават в лично github хранилище за всеки човек чрез pull request.
(TODO конкретизирай точките)Проектът, който правите, може да е споделен между практикума и главната дисциплина, стига той да дава достатъчно точки.
Проектът се предава по същия начин както домашните - pull request във вашето хранилище в github, по който ви пиша обратна връзка.
Имате няколко варианта.
Препоръчваният начин е да използвате ghcup
- инструмент за менежиране на инструменти свързани с Haskell
.
На началната страница на ghcup
има едноредови инструкции за инсталирането на ghcup
, заедно с gif, демонстриращ как да го използвате, за да инсталирате инструменти.
Алтернативно можете да разгледате по-подробните инструкции за инсталиране на ghcup
.
След като го инсталирате, може да изпълните
> ghcup install ghc
или алтернативно, ghcup tui
, след което можете с текстови интърфейс да си изберете какво искате да инсталирате.
След това, моля, проверете дали работи всичко като изпълните командата ghci
в терминал.
Кратко разглеждане на основните Haskell
инструменти, инсталирани чрез ghcup
Препоръчаният метод за работа с Haskell е VSCode, заедно с HLS разширението.
То включва много полезни функционалности, така че е хубаво, ако ви е интересно да се запознаете повече с документацията му/питате мен въпроси за него.
Важно е да се отбележи, че докато работим с файл извън "проект" (което ще правим повечето време), е нужно да имаме инсталирано ghc
и да е в PATH
, за да работи HLS
Нямам против да ползвате <моя-любим-редактор> - аз ще ползвам vim
докато ви показвам неща, като най-вероятно можете да си нагласите и HLS да работи с <моя-любим-редактор>. В такъв случай, можете лесно да се сдобиетe със HLS чрез ghcup
.
Ако решите да не ползвате VSCode, трябва да измислим начин да си споделяте сесията в редактора си с мен, в случай че минем на дистанционно обучение.
-
Донякъде плагиатствам от този курс
-
Книгата на която е базиран горният курс (и също я смятам за добър ресурс)
-
Силно препоръчително четиво свързано с
- как да ни се налага да мислим по-малко докато програмираме
- как да избягваме големи класове грешки с помощта на компилатора
- ключова начин на мислене в Haskell
- защо да програмираме на Haskell
-
Хубав talk/demo за неща които често ти се налагат често и как се правят те в Haskell - цък
-
Hoogle - търсене за хаскел функции (идентификатори) (и по типове!)
-
Hackage - търсене за хаскел пакети
-
Real World Haskell - практично насочена
Малко остаряла.
-
Специализирани ресурси:
- защо да правим
a -> Maybe b
, вместоa -> Bool
: - Мазохизъм/Програмиране с типове - Thinking with Types
- Паралелно и конкуретно програмиране - Parallel and Concurrent Programming in Haskell
- една от въведителните части е доста добра за добиване на по-добро разбиране над оценителния модел на Haskell
- Разглеждане на фундаментални типови класове - Typeclassopedia
- Разглеждане на различни интересни библиотеки/разшиерния на езика - 24 days of *
- Има много научни статии, които са доста лесно четими дори за начинаещи.
- защо да правим
Съветвам ви директно да ме питате за повече ресурси ако ви интересува конкретна тема.
Курсът се подкрепя от Tweag