|
|
@ -59,8 +59,8 @@ IRC канал `#haskell-beginners` на Freenode.
|
|
|
|
Просто почти все «ну, на самом деле» являются показухой, а не поиском правды.
|
|
|
|
Просто почти все «ну, на самом деле» являются показухой, а не поиском правды.
|
|
|
|
|
|
|
|
|
|
|
|
Не делайте всю работу за обучающегося.
|
|
|
|
Не делайте всю работу за обучающегося.
|
|
|
|
Если вы ввидите, что человек работает над проблемой,
|
|
|
|
Если вы видите, что человек работает над проблемой,
|
|
|
|
вы не должны немедлено выдавать советы или готовые решения.
|
|
|
|
вы не должны немедленно выдавать советы или готовые решения.
|
|
|
|
Дайте ему поработать и поизучать,
|
|
|
|
Дайте ему поработать и поизучать,
|
|
|
|
пока он сам не попросит помощи.
|
|
|
|
пока он сам не попросит помощи.
|
|
|
|
Избегать помех — [одна из основных причин существования #haskell-beginners](http://chrisdone.com/posts/teaching).
|
|
|
|
Избегать помех — [одна из основных причин существования #haskell-beginners](http://chrisdone.com/posts/teaching).
|
|
|
@ -126,7 +126,7 @@ export PATH=$PATH:~/.cabal/bin:/opt/cabal/1.22/bin:/opt/ghc/7.8.4/bin:/opt/happy
|
|
|
|
|
|
|
|
|
|
|
|
### Использование Ubuntu PPA
|
|
|
|
### Использование Ubuntu PPA
|
|
|
|
|
|
|
|
|
|
|
|
Если вы не используете стабильный дистрибутив, вы можете повторить все теже шаги,
|
|
|
|
Если вы не используете стабильный дистрибутив, вы можете повторить все те же шаги,
|
|
|
|
что и для Ubuntu, но вам надо будет выполнить дополнительную команду.
|
|
|
|
что и для Ubuntu, но вам надо будет выполнить дополнительную команду.
|
|
|
|
Сразу после `sudo add-apt-repository -y ppa:hvr/ghc` выполните:
|
|
|
|
Сразу после `sudo add-apt-repository -y ppa:hvr/ghc` выполните:
|
|
|
|
|
|
|
|
|
|
|
@ -156,7 +156,7 @@ $ sudo sed -i s/jessie/trusty/g /etc/apt/sources.list.d/hvr-ghc-jessie.list
|
|
|
|
|
|
|
|
|
|
|
|
## Fedora 21
|
|
|
|
## Fedora 21
|
|
|
|
|
|
|
|
|
|
|
|
Чтобы уставновить Haskell 7.8.4 из неофициального репо (Fedora 22+ будут содержать его в официальном):
|
|
|
|
Чтобы установить Haskell 7.8.4 из неофициального репо (Fedora 22+ будут содержать его в официальном):
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
```bash
|
|
|
|
$ sudo yum-config-manager --add-repo \
|
|
|
|
$ sudo yum-config-manager --add-repo \
|
|
|
@ -260,7 +260,7 @@ $ cabal install alex happy
|
|
|
|
|
|
|
|
|
|
|
|
Скачайте GHC и Cabal из вашего пакетного менеджера,
|
|
|
|
Скачайте GHC и Cabal из вашего пакетного менеджера,
|
|
|
|
затем добавьте `~/.cabal/bin` в ваше `$PATH`.
|
|
|
|
затем добавьте `~/.cabal/bin` в ваше `$PATH`.
|
|
|
|
Поосле этого обновите `cabal` и установите дополнительные инструменты `alex` и `happy`.
|
|
|
|
После этого обновите `cabal` и установите дополнительные инструменты `alex` и `happy`.
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
```bash
|
|
|
|
$ cabal update
|
|
|
|
$ cabal update
|
|
|
@ -299,7 +299,7 @@ $ cabal install cabal-install alex happy
|
|
|
|
[Доступен на Github](https://github.com/NICTA/course).
|
|
|
|
[Доступен на Github](https://github.com/NICTA/course).
|
|
|
|
|
|
|
|
|
|
|
|
Этот курс укрепит и добавит опыта реализации абстракций,
|
|
|
|
Этот курс укрепит и добавит опыта реализации абстракций,
|
|
|
|
представленых в курсе cis194.
|
|
|
|
представленных в курсе cis194.
|
|
|
|
Эта практика *критически важна* для комфортного использования
|
|
|
|
Эта практика *критически важна* для комфортного использования
|
|
|
|
в дальнейшем таких абстракций как Functor/Applicative/Monad/и т. п. в Haskell.
|
|
|
|
в дальнейшем таких абстракций как Functor/Applicative/Monad/и т. п. в Haskell.
|
|
|
|
Выполнение cis194 и затем NICTA курсов представляет собой основную рекомендацию моего руководства и того, как научить любого языку Haskell.
|
|
|
|
Выполнение cis194 и затем NICTA курсов представляет собой основную рекомендацию моего руководства и того, как научить любого языку Haskell.
|
|
|
@ -393,7 +393,7 @@ let a = 1 * a -- not guarded, (*) is strict
|
|
|
|
Перевод:
|
|
|
|
Перевод:
|
|
|
|
|
|
|
|
|
|
|
|
<!-- TODO: I don’t really understand this, so I can’t translate properly -->
|
|
|
|
<!-- TODO: I don’t really understand this, so I can’t translate properly -->
|
|
|
|
> Интересное замечание: GHC должен скрывать отображение токена статуса поздаи
|
|
|
|
> Интересное замечание: GHC должен скрывать отображение токена статуса
|
|
|
|
> абстрактного типа IO, потому что токен статуса должен все время быть использован
|
|
|
|
> абстрактного типа IO, потому что токен статуса должен все время быть использован
|
|
|
|
> линейно (не быть дуплицирован или сброшен), но система типов не может принудительно
|
|
|
|
> линейно (не быть дуплицирован или сброшен), но система типов не может принудительно
|
|
|
|
> этого делать. Понятно, что другой ленивый подобный Haskell язык, имеет уникальные типы
|
|
|
|
> этого делать. Понятно, что другой ленивый подобный Haskell язык, имеет уникальные типы
|
|
|
@ -543,8 +543,8 @@ Cabal Hell был проблемой для пользователей Haskell
|
|
|
|
|
|
|
|
|
|
|
|
Основанный на песочницах подход, который я советую, поможет избежать проблем с
|
|
|
|
Основанный на песочницах подход, который я советую, поможет избежать проблем с
|
|
|
|
зависимостями пакетов, но он не совместим со способом, предоставляемым Haskell Platform для
|
|
|
|
зависимостями пакетов, но он не совместим со способом, предоставляемым Haskell Platform для
|
|
|
|
собраных пакетов. Если вы все еще изучаете Haskell и не понимаете как ghc-pkg и Cabal
|
|
|
|
собранных пакетов. Если вы все еще изучаете Haskell и не понимаете как ghc-pkg и Cabal
|
|
|
|
работает, *избегайте платформу* и вместо этого используйте инструкции по установке, описаные выше.
|
|
|
|
работает, *избегайте платформу* и вместо этого используйте инструкции по установке, описанные выше.
|
|
|
|
|
|
|
|
|
|
|
|
## Stackage
|
|
|
|
## Stackage
|
|
|
|
|
|
|
|
|
|
|
@ -591,7 +591,7 @@ hackage для поиска по дефолту).
|
|
|
|
Другая вещь, о которой надо помнить, это то, что из-за способа, которым `$pkg` параметр
|
|
|
|
Другая вещь, о которой надо помнить, это то, что из-за способа, которым `$pkg` параметр
|
|
|
|
интерполируется *посредством* cabal, не вами, `html-location` и `content-location`
|
|
|
|
интерполируется *посредством* cabal, не вами, `html-location` и `content-location`
|
|
|
|
параметры *должны быть в одиночных кавычках* и набираться в оболочке или содержаться в
|
|
|
|
параметры *должны быть в одиночных кавычках* и набираться в оболочке или содержаться в
|
|
|
|
шелл-скрипте. Они не будут работать в Makefile, потому что haddock будет думать, что они
|
|
|
|
shell-скрипте. Они не будут работать в Makefile, потому что haddock будет думать, что они
|
|
|
|
являются переменными Make!
|
|
|
|
являются переменными Make!
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
```bash
|
|
|
@ -670,7 +670,7 @@ GHCJS и Haste интегрируются лучше с инструментам
|
|
|
|
|
|
|
|
|
|
|
|
# Линзы и призмы
|
|
|
|
# Линзы и призмы
|
|
|
|
|
|
|
|
|
|
|
|
Как только вы почувствуюте себя комфортно с Haskell, очень рекомендую изучить Lenses
|
|
|
|
Как только вы почувствуете себя комфортно с Haskell, очень рекомендую изучить Lenses
|
|
|
|
и Prisms, даже лишь в качестве «пользователя». Вам не обязательно нужно понимать лежащую
|
|
|
|
и Prisms, даже лишь в качестве «пользователя». Вам не обязательно нужно понимать лежащую
|
|
|
|
в основе категорию для того, чтобы они были полезны.
|
|
|
|
в основе категорию для того, чтобы они были полезны.
|
|
|
|
|
|
|
|
|
|
|
@ -733,7 +733,7 @@ catamorphisms). Знание о том, как реализовать unfold (an
|
|
|
|
[Catster’s Guide 2](http://byorgey.wordpress.com/catsters-guide-2/).
|
|
|
|
[Catster’s Guide 2](http://byorgey.wordpress.com/catsters-guide-2/).
|
|
|
|
|
|
|
|
|
|
|
|
- [Вики-книга haskell](http://en.wikibooks.org/wiki/Haskell/Category_theory)
|
|
|
|
- [Вики-книга haskell](http://en.wikibooks.org/wiki/Haskell/Category_theory)
|
|
|
|
содержит неплохие диаграмы.
|
|
|
|
содержит неплохие диаграммы.
|
|
|
|
|
|
|
|
|
|
|
|
- [Category Theory](http://www.haskell.org/haskellwiki/Category_theory)
|
|
|
|
- [Category Theory](http://www.haskell.org/haskellwiki/Category_theory)
|
|
|
|
на haskellwiki, также содержит хорошие ссылки.
|
|
|
|
на haskellwiki, также содержит хорошие ссылки.
|
|
|
|