|
|
@ -20,7 +20,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
* [繁體中文](guide-zh_tw.md)
|
|
|
|
* [繁體中文](guide-zh_tw.md)
|
|
|
|
|
|
|
|
|
|
|
|
#### *Не страдайте над одним топиком, который вы не можете понять сразу*. Двигайтесь дальше!
|
|
|
|
#### *Не мучайтесь над одним топиком, который вы не можете понять сразу*. Двигайтесь дальше!
|
|
|
|
|
|
|
|
|
|
|
|
## Сообщество
|
|
|
|
## Сообщество
|
|
|
|
|
|
|
|
|
|
|
@ -36,7 +36,7 @@ IRC веб-клиент [здесь](http://webchat.freenode.net/).
|
|
|
|
[Смотрите пост про обучение от Криса Дона](http://chrisdone.com/posts/teaching)
|
|
|
|
[Смотрите пост про обучение от Криса Дона](http://chrisdone.com/posts/teaching)
|
|
|
|
|
|
|
|
|
|
|
|
Будьте дружелюбны и вежливы. Грубость и хамство испугает собеседника
|
|
|
|
Будьте дружелюбны и вежливы. Грубость и хамство испугает собеседника
|
|
|
|
и отталкнет от участия в общении.
|
|
|
|
и оттолкнет от участия в общении.
|
|
|
|
|
|
|
|
|
|
|
|
Слабая, неконструктивная критика удовлетворяет лишь
|
|
|
|
Слабая, неконструктивная критика удовлетворяет лишь
|
|
|
|
критикующего, но не помогает критикуемому.
|
|
|
|
критикующего, но не помогает критикуемому.
|
|
|
@ -44,11 +44,11 @@ IRC веб-клиент [здесь](http://webchat.freenode.net/).
|
|
|
|
Не описывайте вещи как "легкие" или "тривиальные".
|
|
|
|
Не описывайте вещи как "легкие" или "тривиальные".
|
|
|
|
Вы заставляете людей чувствовать себя ужасно за то,
|
|
|
|
Вы заставляете людей чувствовать себя ужасно за то,
|
|
|
|
что они усердно и много работают ради своего прогресса.
|
|
|
|
что они усердно и много работают ради своего прогресса.
|
|
|
|
Медленно-обучающиеся люди зачастую самые дотошные обучающиеся,
|
|
|
|
Медленные в обучении люди зачастую самые дотошные,
|
|
|
|
этому наоборот надо радоваться!
|
|
|
|
этому наоборот надо радоваться!
|
|
|
|
|
|
|
|
|
|
|
|
Не симулируйте удивление. Не изображайте удивление, когда кто-либо
|
|
|
|
Не симулируйте удивление. Не изображайте удивление, когда кто-либо
|
|
|
|
говорит, что он не знает что-то. Они будут чувствовать себя ужасно,
|
|
|
|
говорит, что он не знает что-то. Он будут чувствовать себя ужасно,
|
|
|
|
а вы не получите ничего, кроме резкости.
|
|
|
|
а вы не получите ничего, кроме резкости.
|
|
|
|
|
|
|
|
|
|
|
|
"ну, на самом деле". Когда кто-либо говорит что-то почти -
|
|
|
|
"ну, на самом деле". Когда кто-либо говорит что-то почти -
|
|
|
@ -76,7 +76,7 @@ IRC веб-клиент [здесь](http://webchat.freenode.net/).
|
|
|
|
# Что такое Haskell, GHC и Cabal?
|
|
|
|
# Что такое Haskell, GHC и Cabal?
|
|
|
|
|
|
|
|
|
|
|
|
Haskell - это язык программирования, изложенный в спецификациях,
|
|
|
|
Haskell - это язык программирования, изложенный в спецификациях,
|
|
|
|
последняя опубликована в 2010 году.
|
|
|
|
последняя версия которых опубликована в 2010 году.
|
|
|
|
Эта спецификация доступна как [онлайн-документ](http://www.haskell.org/onlinereport/haskell2010/).
|
|
|
|
Эта спецификация доступна как [онлайн-документ](http://www.haskell.org/onlinereport/haskell2010/).
|
|
|
|
|
|
|
|
|
|
|
|
## GHC
|
|
|
|
## GHC
|
|
|
@ -85,8 +85,8 @@ Haskell - это язык программирования, изложенный
|
|
|
|
|
|
|
|
|
|
|
|
## Cabal
|
|
|
|
## Cabal
|
|
|
|
|
|
|
|
|
|
|
|
[Cabal](https://www.haskell.org/cabal/download.html) осуществляет менеджмент проектов и разрешение зависимостей.
|
|
|
|
[Cabal](https://www.haskell.org/cabal/download.html) позволяет управлять проектами и разрешает зависимости.
|
|
|
|
Это способ установить проект, обычно в их песочницу (изолированное окружение).
|
|
|
|
При помощи него вы устанавливаете и создаете проекты, обычно в песочницу (изолированное окружение).
|
|
|
|
|
|
|
|
|
|
|
|
Cabal аналогичен Bundler в Ruby, pip в Python, NPM в Node и так далее. GHC управляет пакетами сам, Cabal решает какие версии устанавливать.
|
|
|
|
Cabal аналогичен Bundler в Ruby, pip в Python, NPM в Node и так далее. GHC управляет пакетами сам, Cabal решает какие версии устанавливать.
|
|
|
|
|
|
|
|
|
|
|
@ -100,7 +100,7 @@ Cabal аналогичен Bundler в Ruby, pip в Python, NPM в Node и так
|
|
|
|
|
|
|
|
|
|
|
|
## Ubuntu
|
|
|
|
## Ubuntu
|
|
|
|
|
|
|
|
|
|
|
|
[Этот PPA](http://launchpad.net/~hvr/+archive/ghc) лучший и именно его я использую на
|
|
|
|
[Этот PPA](http://launchpad.net/~hvr/+archive/ghc) лучший, и именно его я использую на
|
|
|
|
всех моих серверах и локальных машинах с Linux.
|
|
|
|
всех моих серверах и локальных машинах с Linux.
|
|
|
|
|
|
|
|
|
|
|
|
А именно:
|
|
|
|
А именно:
|
|
|
@ -120,7 +120,7 @@ export PATH=$PATH:~/.cabal/bin:/opt/cabal/1.22/bin:/opt/ghc/7.8.4/bin:/opt/happy
|
|
|
|
```
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
*Опционально:* вы можете добавить также `.cabal-sandbox/bin` к вашему пути.
|
|
|
|
*Опционально:* вы можете добавить также `.cabal-sandbox/bin` к вашему пути.
|
|
|
|
Код, который вы разрабатываете будет доступен вам из командной строки.
|
|
|
|
Код, который вы разрабатываете, будет доступен вам из командной строки.
|
|
|
|
Это работает только тогда, когда ваша текущая рабочая папка - песочница cabal.
|
|
|
|
Это работает только тогда, когда ваша текущая рабочая папка - песочница cabal.
|
|
|
|
|
|
|
|
|
|
|
|
## Debian
|
|
|
|
## Debian
|
|
|
@ -231,7 +231,7 @@ $ cabal install alex happy
|
|
|
|
### 10.9
|
|
|
|
### 10.9
|
|
|
|
|
|
|
|
|
|
|
|
Установите [GHC для Mac OS X](http://ghcformacosx.github.io/) приложение,
|
|
|
|
Установите [GHC для Mac OS X](http://ghcformacosx.github.io/) приложение,
|
|
|
|
которе включает в себя GHC и Cabal.
|
|
|
|
которое включает в себя GHC и Cabal.
|
|
|
|
Оно предоставляет инструкции, как добавить GHC и Cabal в ваш путь,
|
|
|
|
Оно предоставляет инструкции, как добавить GHC и Cabal в ваш путь,
|
|
|
|
после того как вы скопируете приложение `.app` куда-либо.
|
|
|
|
после того как вы скопируете приложение `.app` куда-либо.
|
|
|
|
|
|
|
|
|
|
|
@ -387,7 +387,7 @@ let a = 1 * a -- not guarded, (*) is strict
|
|
|
|
- [First class "statements"](http://blog.jle.im/entry/first-class-statements).
|
|
|
|
- [First class "statements"](http://blog.jle.im/entry/first-class-statements).
|
|
|
|
|
|
|
|
|
|
|
|
- [Haddocks for System.IO.Unsafe.unsafePerformIO](http://hackage.haskell.org/package/base-4.7.0.1/docs/System-IO-Unsafe.html#v:unsafePerformIO)
|
|
|
|
- [Haddocks for System.IO.Unsafe.unsafePerformIO](http://hackage.haskell.org/package/base-4.7.0.1/docs/System-IO-Unsafe.html#v:unsafePerformIO)
|
|
|
|
Читая документацию обратите внимание на реализацию unsafeDupablePerformIO
|
|
|
|
При прочтении, обратите внимание на реализацию unsafeDupablePerformIO
|
|
|
|
|
|
|
|
|
|
|
|
Комментарий с обсуждения на Reddit от `glaebhoerl`
|
|
|
|
Комментарий с обсуждения на Reddit от `glaebhoerl`
|
|
|
|
|
|
|
|
|
|
|
@ -447,10 +447,10 @@ Writer, State) для себя, чтобы понять их лучше. Зат
|
|
|
|
|
|
|
|
|
|
|
|
# Тестирование, тесты, спеки, generative/property тестирование
|
|
|
|
# Тестирование, тесты, спеки, generative/property тестирование
|
|
|
|
|
|
|
|
|
|
|
|
- Это [руководство](https://github.com/kazu-yamamoto/unit-test-example/blob/master/markdown/en/tutorial.md) от Kazu Yamamoto просто фантастичкое.
|
|
|
|
- Это [руководство](https://github.com/kazu-yamamoto/unit-test-example/blob/master/markdown/en/tutorial.md) от Kazu Yamamoto – просто фантастичecкое.
|
|
|
|
|
|
|
|
|
|
|
|
- [Simple-Conduit](https://github.com/jwiegley/simple-conduit): Хорошая простая
|
|
|
|
- [Simple-Conduit](https://github.com/jwiegley/simple-conduit): Хорошая простая
|
|
|
|
библиотека для изучения, как работает стриминг IO вобщем, знания, применимые также
|
|
|
|
библиотека для изучения, как работает стриминг IO в целом, знания, применимые также
|
|
|
|
к таким библиотекам как Pipes и Conduit.
|
|
|
|
к таким библиотекам как Pipes и Conduit.
|
|
|
|
|
|
|
|
|
|
|
|
# Парсинг в Haskell
|
|
|
|
# Парсинг в Haskell
|
|
|
@ -583,7 +583,7 @@ hackage для поиска по дефолту).
|
|
|
|
|
|
|
|
|
|
|
|
2. [Hackage documentation v2](http://fuuzetsu.co.uk/blog/posts/2014-01-06-Hackage-documentation-v2.html)
|
|
|
|
2. [Hackage documentation v2](http://fuuzetsu.co.uk/blog/posts/2014-01-06-Hackage-documentation-v2.html)
|
|
|
|
|
|
|
|
|
|
|
|
Заметтье, что эти публикации *слегка устарели*: например, теперь Hackage поддерживает
|
|
|
|
Заметьте, что эти публикации *слегка устарели*: например, теперь Hackage поддерживает
|
|
|
|
новую информацию с информацией о документации и статус сборки.
|
|
|
|
новую информацию с информацией о документации и статус сборки.
|
|
|
|
|
|
|
|
|
|
|
|
## Что вам правда нужно знать
|
|
|
|
## Что вам правда нужно знать
|
|
|
|