#### *Не намагайтесь одразу зрозуміти все*. Краще продовжуйте вивчати!
#### *Не намагайтесь одразу зрозуміти все*. Краще не зупиняйтесь і продовжуйте рухатись далі!
## Ком’юніті
Наш канал в IRC - `#haskell-beginners` на серверах Freenode.
Веб-інтерфейс для IRC [here](http://webchat.freenode.net/).
Веб-інтерфейс для IRC можна знайти [тут](http://webchat.freenode.net/).
Пов'язані з Haskell [поштові розсилки](https://wiki.haskell.org/Mailing_lists).
@ -45,11 +45,11 @@
Не треба удаваного здивування. Не зображуйте подив, коли хтось каже, що він чогось не знає. Люди знов таки будуть почуватись жахливо, а ви не досягнете майже нічого окрім різкості.
Ніяких "Насправді". Хтось каже щось, що майже, але не цілковито, правильне, і тут ви кажете "насправді..." і додаєте малосуттєве виправлення. Особливо це дратує, коли виправлення не має мало спільного з темою обговорення. Це не значить, що наша спільнота не орієнтована на пошук істини чи що ми не вважаємо, що точність важлива. Майже усі "насправді" призначені для самозвеличення, а не для пошуку істини.
Ніяких "Насправді". Хтось каже щось, що майже, але не цілковито, правильне, і тут ви кажете "насправді..." і додаєте малосуттєве виправлення. Особливо це дратує, коли виправлення має мало спільного з темою обговорення. Це не значить, що наша спільнота не орієнтована на пошук істини чи що ми не вважаємо, що точність важлива. Майже усі "насправді" призначені для самозвеличення, а не для пошуку істини.
Намагайтесь не забігати поперед учня. Не треба періодично влізати із порадами якщо ви бачите, що людина працює над проблемою. Дайте їй шанс подолати проблему самотужки, авже потім звернутися за порадою. Уникнення втручаннь є одним з найважливіших задумів #haskell-beginners.
Намагайтесь не забігати поперед учня. Не треба періодично влізати із порадами якщо ви бачите, що людина працює над проблемою. Дайте їй шанс подолати проблему самотужки, аза потреби за порадою. Уникнення втручаннь є одним з найважливіших задумів #haskell-beginners.
Ніяких -измів, навіть важкопомітних абозамаскованих. Расизм, сексизм, гомофобія, трансфобія та інші види упередженності у жодному разі не припускаються.
Ніяких -измів, навіть замаскованих. Расизм, сексизм, гомофобія, трансфобія та інші види упередженності у жодному разі не припускаються.
@ -58,7 +58,7 @@
# Що таке Haskell, GHC та Cabal?
Haskell - це мова програмування, яка описується в доповідях. Остання на сьогодні доповідь була зроблена в 2010 році і доступна [за цим посиланням](http://www.haskell.org/onlinereport/haskell2010/).
Haskell - це мова програмування, яка описується в так званих "доповідях". Остання на сьогодні доповідь була зроблена в 2010 році і доступна [за цим посиланням](http://www.haskell.org/onlinereport/haskell2010/).
# Встановлення Haskell
@ -74,9 +74,9 @@ Haskell - це мова програмування, яка описується
## Cabal
[Cabal](https://www.haskell.org/cabal/download.html) є інструментом з керування проектом та розв'язання залежностей. Завдяки йому ви будете встановлювати проекти, начастіше в їхнє власне ізольоване середовище.
[Cabal](https://www.haskell.org/cabal/download.html) є інструментом з керування проектом та розв'язання залежностей. Завдяки йому ви будете встановлювати проекти, начастіше в їхнє власне ізольоване середовище (так званий сендбокс).
Cabal - це еквівалент Bundler в Ruby, pip в Python, NPM в Node.js, Maven і таке інше. GHC самостійно займається обслуговуванням пакунків, але Cabal обирає версії для інсталяції.
Cabal - це еквівалент Bundler в Ruby, pip в Python, NPM в Node.js, Maven та інших. GHC самостійно займається обслуговуванням пакунків, але Cabal обирає версії для інсталяції.
*Не обов'язково:* Можна також додати `.cabal-sandbox/bin` до набор шляхів. Код, над яким ви зараз працюєте, буде доступний для вас одразу із командного рядка. Цей метод працює, коли ваша робоча директорія - сендбокс Cabal.
*Не обов'язково:* Можна також додати `.cabal-sandbox/bin` до системних шляхів. Код, над яким ви зараз працюєте, буде доступний для вас одразу із командного рядка. Цей метод працює, коли ваша робоча директорія - сендбокс Cabal.
На Gentoo встановити індивідуальні компоненти Haskell Platform можливо за допомогою Portage. При використанні `ACCEPT_KEYWORDS=arch` (замість `ACCEPT_KEYWORDS=~arch`), Portage встановить більш давні версії різноманітних пакетів, пов'язаних із Haskell. Маючи це на увазі, якщо і тільки якщо ви використовуєта`ACCEPT_KEYWORDS=arch`, тоді додайте до `/etc/portage/package.keywords` наступні рядки:
На Gentoo встановити індивідуальні компоненти Haskell Platform можливо за допомогою Portage. При використанні `ACCEPT_KEYWORDS=arch` (замість `ACCEPT_KEYWORDS=~arch`), Portage встановить більш давні версії різноманітних пакетів, пов'язаних із Haskell. Маючи це на увазі, якщо і тільки якщо ви користуєтесь`ACCEPT_KEYWORDS=arch`, тоді додайте до `/etc/portage/package.keywords` наступні рядки:
В дереві Portage Gentoo містить "стабільні" (читай: застарілі) версії `cabal-install`, тож якщо ви хочете використовувати `cabal-install` для інсталяції останніх версії пакетів, виконайте наступні команди (зважайте на зворотні слеші, вони там навмісно):
В дереві Portage Gentoo містить "стабільні" (читай: застарілі) версії `cabal-install`, тож якщо ви хочете використовувати `cabal-install` для інсталяції останніх версій пакетів, виконайте наступні команди (зважайте на зворотні слеші, це важливо):
Таким чином ви встановили системний пакет Cabal завдяки Portage і локальну версію у вашій домашній директорії завдяки`cabal-install`. Тепер треба переконатись, що запуск в терміналі команди `cabal` призведе запуск найбільш свіжої версії у вашій домашній директорії. Для цього можна додати наступні рядки до конфігурації вашого командного інтерпретатора:
Таким чином ви встановили системний пакет Cabal із Portage і локальну версію у вашій домашній директорії через `cabal-install`. Тепер треба переконатись, що запуск в терміналі команди `cabal` призведе запуск найсвіжішої версії у вашій домашній директорії. Для цього можна додати наступні рядки до конфігурації вашого командного інтерпретатора:
```bash
PATH=$PATH:$HOME/.cabal/bin
alias cabal="$HOME/.cabal/bin/cabal"
```
Якщо ви не знаєте, який інтерпретатор ви використовуєте, то найбільш ймовірно, що це Bash. Якщо ви користуєтесь Bash, вам треба редагувати файл `~/.bashrc`. Для Z-shell треба редагувати `~/.zshrc`. Наступна команда дозволить вам з'ясувати, який інтерпретатор ви використовуєте.
Якщо ви не знаєте, який ваш інтерпретатор, то найбільш ймовірно, що це Bash. Якщо ви використовуєте Bash, тоді треба редагувати файл `~/.bashrc`. Для Z-shell треба редагувати `~/.zshrc`. Наступна команда дозволить вам з'ясувати, який інтерпретатор ви використовуєте.
```bash
echo $SHELL | xargs basename
@ -198,13 +198,13 @@ echo $SHELL | xargs basename
$ cabal install alex happy
```
Вітаю! Тепер ви маєте працюючу інсталяцію Haskell!
Вітаю! Тепер ви маєте готову інсталяцію Haskell!
## Mac OS X
### 10.9
Встановіть додаток [GHC for Mac OS X](http://ghcformacosx.github.io/), в який включено GHC та Cabal. Додаток містить опис того, як додати GHC та Cabal до вашого системного шляху після того, як ви кудись встановите `.app`.
Встановіть додаток [GHC for Mac OS X](http://ghcformacosx.github.io/), в який включено GHC та Cabal. Додаток містить опис додання GHC та Cabal до вашого системного шляху після того, як ви кудись встановите `.app`.
### 10.6-10.8
@ -214,12 +214,12 @@ $ cabal install alex happy
- [Мінімальний встановник GHC](https://github.com/fpco/minghc#using-the-installer) вміє скомпілювати `network` та інші бібліотеки. Він містить мінімальну версію середовища GHC разом із Cabal та MSYS (середовище для компілятора, яке надає можливість встановлювати пакети накшталт `network`)
Web-сторінка [minghc](https://github.com/fpco/minghc) містить трохи додаткових деталей, але зауважте, що за замовченням встановлення відбудеться у вашу локальну директорію AppData, а не глобально на всю систему.
Web-сторінка [minghc](https://github.com/fpco/minghc) містить трохи додаткових деталей, але зауважте, що за замовченням встановлення відбудеться у вашу локальну директорію AppData, а не глобально для всієї системи.
(C:\Users\<username>\AppData\Local\Programs)
## Інші версії Linux
Отримайте найостаннішу версію дистрибутивів Cabal та GHC:
Отримайте найсвіжішу версію дистрибутивів Cabal та GHC:
- [GHC](http://www.haskell.org/ghc/).
@ -228,7 +228,7 @@ Web-сторінка [minghc](https://github.com/fpco/minghc) містить т
## Користувачі інших операційних систем, подібних до Unix
Встановіть GHC та Cabal із вашого пакетного менеджеру, потім додайте `~/.cabal/bin` до змінної `$PATH`. Після цього, оновіть `cabal` та встановіть додаткові інструменти `alex` та `happy`.
Встановіть GHC та Cabal із вашої пакетної системи, потім додайте `~/.cabal/bin` до змінної `$PATH`. Після цього, оновіть `cabal` та встановіть додаткові інструменти `alex` та `happy`.
```bash
$ cabal update
@ -244,11 +244,11 @@ $ cabal install cabal-install alex happy
## Курс cis194 від Yorgey
> *ПОЧНІТЬ З ЦЬОГО*, це головний шлях занурення в Haskell, який ми рекомендуємо.
> *ПОЧНІТЬ З ЦЬОГО*, це головний рекомендований метод занурення в Haskell.
Курс [Брента Йорґі](https://byorgey.wordpress.com) (Brent Yorgey) - найкращій курс, який я знайшов на сьогодні. Особлива цінність цього курсу в тому, що він не тільки навчить вас як писати базові речі на Haskell, але й допоможе зрозуміти комбінатори парсера.
Курс [Брента Йорґі](https://byorgey.wordpress.com) (Brent Yorgey) - найкращій курс, який я знайшов на сьогодні. Особлива цінність цього курсу в тому, що він не тільки навчить вас писати базові речі на Haskell, але й допоможе зрозуміти комбінатори парсера.
Не слід починати з cis194 тільки в тому випадку, коли ви не програміст або програміст із маленьким досвідом. В цьому разі почніть з [цієї книги Томпсона](http://www.haskellcraft.com/craft3e/Home.html), після чого переходьте до cis194.
@ -260,7 +260,7 @@ $ cabal install cabal-install alex happy
Матеріали курсу доступні [на github](https://github.com/NICTA/course).
Цей курс посилить та збагатить ваш досвід через реалізацію абстракцій, які були введені в курсі cis194. Цей практичний досвід *критичний*, так як він надасть вам впевненості у повсякденному використанні Functor/Applicative/Monad/ін. у Haskell. Проходження cis194, а після нього NICTA - головна рекомендація цієї інструкції. Саме так ми вчимо Haskell всіх бажаючих.
Цей курс посилить та збагатить ваш досвід через реалізацію абстракцій, які були введені в курсі cis194. Такий практичний досвід є *критичним*, так як він надасть вам впевненості у повсякденному використанні Functor/Applicative/Monad/ін. у Haskell. Проходження cis194, а після нього NICTA - головна рекомендація цієї інструкції. Саме так ми вчимо Haskell всіх бажаючих.
---
@ -272,7 +272,7 @@ $ cabal install cabal-install alex happy
Курс cs240h доступний [онлайн](http://www.scs.stanford.edu/14sp-cs240h/).
Цей курс, створений Брайаном О'Салліваном(https://github.com/bos) за мотивами його викладацької діяльності в університеті Стенфорду.
Щоб уявити хто це, зауважте такий факт: половина бібліотек, від яких залежить майже будь-яка програма на Haskell, містить його ім'я серед авторів. Після проходження курсу Йорґі особливо зверніть увагу на модулі присвячені фантомним типам, контролю потоку інформації, розширенням мови, сумісному виконанню, pipes та лінзам.
Щоб уявити хто це, зауважте такий факт: ледь не половина бібліотек, від яких залежить майже будь-яка програма на Haskell, містить його ім'я серед авторів. Після проходження курсу Йорґі особливо зверніть увагу на модулі присвячені фантомним типам, контролю потоку інформації, розширенням мови, сумісному виконанню, pipes та лінзам.