googleson78 / fp-lab-2022-23

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Участие в курса

За да участвате в курса, трябва да се свържете с мен, за да предприема действия:

  • включване в "екип" в Microsoft Teams, в който да мога да ви сръчквам за обявления
  • взимане на данни нужни за подготовка за домашни и сформиране на таблица с оценки

Това се случва, като пишете на мен(Георги Людмилов Любенов) лично съобщение в Teams в следния формат:

<фн>,<две имена на кирилица>,<github потребителско име>

Teams

Курсът има канали във СУ 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

Контакти

Взимане на курса

Курсът се взима с домашни и проект.

Домашните не са задължителни, проектът е.

Имането на проект не гарантира взимането на предмета. Пример за кога би се случило това е ако не напишете нито едно домашно и изберете да правите проект, който дава минималния брой точки.

Домашните ще са между 3 и 7 на брой.

Домашните ще се предават в лично github хранилище за всеки човек чрез pull request.

(TODO конкретизирай точките)Проектът, който правите, може да е споделен между практикума и главната дисциплина, стига той да дава достатъчно точки.

Проектът се предава по същия начин както домашните - pull request във вашето хранилище в github, по който ви пиша обратна връзка.

Технически детайли

Инсталиране на инструменти за работа с Haskell

Имате няколко варианта.

Препоръчваният начин е да използвате ghcup - инструмент за менежиране на инструменти свързани с Haskell.

На началната страница на ghcup има едноредови инструкции за инсталирането на ghcup, заедно с gif, демонстриращ как да го използвате, за да инсталирате инструменти.

Алтернативно можете да разгледате по-подробните инструкции за инсталиране на ghcup.

След като го инсталирате, може да изпълните

> ghcup install ghc

или алтернативно, ghcup tui, след което можете с текстови интърфейс да си изберете какво искате да инсталирате.

След това, моля, проверете дали работи всичко като изпълните командата ghci в терминал.

Кратко разглеждане на основните Haskell инструменти, инсталирани чрез ghcup

Редактор и интеграция с Haskell

Препоръчаният метод за работа с Haskell е VSCode, заедно с HLS разширението.

То включва много полезни функционалности, така че е хубаво, ако ви е интересно да се запознаете повече с документацията му/питате мен въпроси за него.

Важно е да се отбележи, че докато работим с файл извън "проект" (което ще правим повечето време), е нужно да имаме инсталирано ghc и да е в PATH, за да работи HLS

Нямам против да ползвате <моя-любим-редактор> - аз ще ползвам vim докато ви показвам неща, като най-вероятно можете да си нагласите и HLS да работи с <моя-любим-редактор>. В такъв случай, можете лесно да се сдобиетe със HLS чрез ghcup.

Ако решите да не ползвате VSCode, трябва да измислим начин да си споделяте сесията в редактора си с мен, в случай че минем на дистанционно обучение.

Haskell ресурси

  • Донякъде плагиатствам от този курс

  • Книгата на която е базиран горният курс (и също я смятам за добър ресурс)

  • Силно препоръчително четиво свързано с

    • как да ни се налага да мислим по-малко докато програмираме
    • как да избягваме големи класове грешки с помощта на компилатора
    • ключова начин на мислене в Haskell
    • защо да програмираме на Haskell
  • Хубав talk/demo за неща които често ти се налагат често и как се правят те в Haskell - цък

  • Hoogle - търсене за хаскел функции (идентификатори) (и по типове!)

  • Hackage - търсене за хаскел пакети

  • Real World Haskell - практично насочена

    Малко остаряла.

  • Специализирани ресурси:

Съветвам ви директно да ме питате за повече ресурси ако ви интересува конкретна тема.


Курсът се подкрепя от Tweag

About


Languages

Language:Haskell 99.5%Language:Nix 0.5%