Skip to content

fmi-fp-lab/fp-lab-template

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

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

  1. Да имате GitHub акаунт

  2. Включване в Discord сървъра за основния курс чрез линка от мудъл

  3. Следване на инструкциите описани в Discord канала #насоки-и-правила

    1. Като подточка, трябва да изберете поне Практикум от Channels & Roles. Целта на това е да мога да ви пращам известия и новини относно курса.
  4. Трябва да ми изпратите на лично съобщение или в Discord или по друг канал следните данни, по предпочитание форматирани по следния начин:

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

    Нужни са ми за да мога да формирам таблица с точки за всеки човек, както и да направя индивидуалните хранилища, които ще се използват за предаване и обратна връзка по домашните. (Няма да минават през скрипт или нещо, ама е хубаво да се придържаме към някакъв формат, все пак)

    Пример за правилно изпратени данни:

    62555,Павел Атанасов,reo101
    

Действията 0. и 3. са задължителни за участие в курса, но 1. и 2. са силно препоръчителни.

Discord

Практикумът споделя Discord сървър с главния курс по ФП.

Целите на сървъра са следните:

  1. Комуникация от моя страна към вас - обявления, пояснения
  2. Директна асинхронна чат комуникация с мен - "как да го направя това?" и подобни
  3. Комункация помежду ви - има канали в които могат да се случват дискусии свързани с курса (а и извън него)

В Discord можете да ме намерите под името Павел Атанасов (reo101). Не се притеснявайте да ми пишете на лично съобщение при всякакви изникнали въпроси

Контакти

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

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

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

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

Домашните обикновено са между 3 и 7 на брой, като практиката ми показва че ми стига времето за 3-4.

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

Проектът, който правите, може да е споделен между практикума и главната дисциплина, стига той да е за поне n точки, където n се уточнява с мен и Трифон когато стане време за проекти.

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

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

Версия на компилатора

В курса ще работим с версия 9.4.7 на Haskell-ският компилатор (ghc). Съответно трябва когато инсталирате компилатора да внимавате да е 9.4.7

Инсрукции за как да си инсталирате най-важните Haskell-ски инструменти има в следващата секция.

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

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

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

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

След като го инсталирате, разгледайте инсрукциите за използване на ghcup, но накратко

ghcup install ghc 9.4.7
ghcup install cabal-install
ghcup install haskell-language-server

Алтернативно, ако сте под Linux, можете да използвате ghcup tui за да получите интерактивен текстов интърфейс (TUI) за работа с ghcup.

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

GHCi, version 9.4.7: https://www.haskell.org/ghc/  :? for help

Обърнете внимание на версията - трябва да е 9.4.7.

При спънки не се безпокойте да се свържете с мен.

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

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

То включва много полезни функционалности - често срещани неща като "форматирай", "отиди на дефиниция", "какъв е типът на това", "оцени израз" и т.н.

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

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

Форматиране

В курса ще форматираме кода си чрез ormolu.

Най-лесният начин да постигнете това е използвайки разширението към редактора си.

За VSCode - след като имате Haskell разширението от миналата стъпка, би трябвало да е достатъчно да пуснете автоматичното форматиране при записване на файл (Format on Save) от VSCode настройките. След това, при всяко записване на файла с който работите, би следвало кодът ви да се форматира.

Haskell ресурси

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

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

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

    • как да ни се налага да мислим по-малко докато програмираме
    • как да избягваме големи класове грешки с помощта на компилатора
    • ключова начин на мислене в Haskell
    • защо да програмираме на Haskell
  • Hoogle - търсене за хаскел функции (идентификатори) (и по типове!)

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

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

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

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

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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published