More more fixes

This commit is contained in:
Roman Shamin 2015-08-07 12:12:30 +03:00
parent a65273df08
commit e98cf820b1

View File

@ -33,7 +33,7 @@ IRC канал `#haskell-beginners` на Freenode.
### Политика сообщества ### Политика сообщества
[Смотрите пост про обучение от Криса Дона](http://chrisdone.com/posts/teaching) [Смотрите пост про обучение от Криса Дона](http://chrisdone.com/posts/teaching).
Будьте дружелюбны и вежливы. Грубость и хамство испугает собеседника Будьте дружелюбны и вежливы. Грубость и хамство испугает собеседника
и оттолкнет от участия в общении. и оттолкнет от участия в общении.
@ -234,7 +234,7 @@ $ cabal install alex happy
Оно предоставляет инструкции, как добавить GHC и Cabal в ваш путь, Оно предоставляет инструкции, как добавить GHC и Cabal в ваш путь,
после того как вы скопируете приложение `.app` куда-либо. после того как вы скопируете приложение `.app` куда-либо.
### 10.6-10.8 ### 10.610.8
Выполните установку бинарников, которая описана ниже, Выполните установку бинарников, которая описана ниже,
для [этого архива](https://www.haskell.org/platform/download/2014.2.0.0/ghc-7.8.3-x86_64-apple-darwin-r3.tar.bz2). для [этого архива](https://www.haskell.org/platform/download/2014.2.0.0/ghc-7.8.3-x86_64-apple-darwin-r3.tar.bz2).
@ -249,7 +249,7 @@ $ cabal install alex happy
## Пользователям других Linux дистрибутивов ## Пользователям других Linux дистрибутивов
Скачайте последние бинарники cabal и ghc: Скачайте последние бинарники Cabal и GHC:
- [GHC](http://www.haskell.org/ghc/). - [GHC](http://www.haskell.org/ghc/).
@ -312,7 +312,7 @@ $ cabal install cabal-install alex happy
cs240h доступен [онлайн](http://www.scs.stanford.edu/14sp-cs240h/). cs240h доступен [онлайн](http://www.scs.stanford.edu/14sp-cs240h/).
Это онлайн курс от [Bryan O'Sullivan](https://github.com/bos), который он преподает в Стенфорде. Это онлайн курс от [Bryan OSullivan](https://github.com/bos), который он преподает в Стенфорде.
Если вы не знаете кто он такой, взгляните на половину библиотек, Если вы не знаете кто он такой, взгляните на половину библиотек,
от которых зависят все приложения на Haskell, и вы увидите его имя в их авторах. от которых зависят все приложения на Haskell, и вы увидите его имя в их авторах.
Если вы уже закончили курс Yorgey, особого внимания в этом курсе заслуживают разделы о фантомных типах, контроле потоков информации, расширениях языка, конкурентном выполнении, pipes и линзах. Если вы уже закончили курс Yorgey, особого внимания в этом курсе заслуживают разделы о фантомных типах, контроле потоков информации, расширениях языка, конкурентном выполнении, pipes и линзах.
@ -357,7 +357,7 @@ cs240h доступен [онлайн](http://www.scs.stanford.edu/14sp-cs240h/)
- [Oh my laziness!](http://alpmestan.com/posts/2013-10-02-oh-my-laziness.html) - [Oh my laziness!](http://alpmestan.com/posts/2013-10-02-oh-my-laziness.html)
- SO вопрос '[Does haskell have laziness?](http://stackoverflow.com/questions/13042353/does-haskell-have-tail-recursive-optimization)' - Вопрос на Stack Overflow — [Does haskell have laziness?](http://stackoverflow.com/questions/13042353/does-haskell-have-tail-recursive-optimization)
- Слайды [Johan Tibell](https://github.com/tibbe) из доклада - Слайды [Johan Tibell](https://github.com/tibbe) из доклада
[reasoning about laziness](http://www.slideshare.net/tibbe/reasoning-about-laziness). [reasoning about laziness](http://www.slideshare.net/tibbe/reasoning-about-laziness).
@ -392,7 +392,7 @@ let a = 1 * a -- not guarded, (*) is strict
Перевод: Перевод:
<!-- TODO: I don't really understand this, so I can't translate properly --> <!-- TODO: I dont really understand this, so I cant translate properly -->
> Интересное замечание: GHC должен скрывать отображение токена статуса поздаи > Интересное замечание: GHC должен скрывать отображение токена статуса поздаи
> абстрактного типа IO, потому что токен статуса должен все время быть использован > абстрактного типа IO, потому что токен статуса должен все время быть использован
> линейно (не быть дуплицирован или сброшен), но система типов не может принудительно > линейно (не быть дуплицирован или сброшен), но система типов не может принудительно
@ -404,9 +404,9 @@ let a = 1 * a -- not guarded, (*) is strict
> Interesting side note: GHC needs to hide the state token representation behind > Interesting side note: GHC needs to hide the state token representation behind
> an abstract IO type because the state token must always be used linearly (not > an abstract IO type because the state token must always be used linearly (not
> duplicated or dropped), but the type system can't enforce this. Clean, another > duplicated or dropped), but the type system cant enforce this. Clean, another
> lazy Haskell-like language, has uniqueness types (which are like linear types > lazy Haskell-like language, has uniqueness types (which are like linear types
> and possibly different in ways I'm not aware of), and they expose the > and possibly different in ways Im not aware of), and they expose the
> World-passing directly and provide a (non-abstract) IO monad only for > World-passing directly and provide a (non-abstract) IO monad only for
> convenience. > convenience.
@ -418,13 +418,12 @@ let a = 1 * a -- not guarded, (*) is strict
Writer, State) для себя, чтобы понять их лучше. Затем, может быть, напишите Writer, State) для себя, чтобы понять их лучше. Затем, может быть, напишите
монадный интерпретатор для маленького языка выражений используя документ монадный интерпретатор для маленького языка выражений используя документ
[Monad Transformers Step by Step](http://catamorph.de/documents/Transformers.pdf) [Monad Transformers Step by Step](http://catamorph.de/documents/Transformers.pdf)
(упомянут в 'трансформеры монад' ниже). (упомянут в «трансформеры монад» ниже).
Написание многих интерпретаторов просто изменяя монаду для изменения семантики Написание многих интерпретаторов просто изменяя монаду для изменения семантики
может помочь лучше понять, что происходит. может помочь лучше понять, что происходит.
- [Этот рассказ](https://vimeo.com/73648150) от Tony отлично мотивирует трансформеры монад - [Этот рассказ](https://vimeo.com/73648150) от Tony отлично мотивирует трансформеры монад, [слайды](https://dl.dropboxusercontent.com/u/7810909/talks/monad-transformers/cbaa991e0eb49224eb286c1e418e2b9828e1fb21/monad-transformers.pdf).
, [слайды](https://dl.dropboxusercontent.com/u/7810909/talks/monad-transformers/cbaa991e0eb49224eb286c1e418e2b9828e1fb21/monad-transformers.pdf).
Также, реализуйте `Control.Monad`. Функции типа `mapM` или `sequence` — хорошая Также, реализуйте `Control.Monad`. Функции типа `mapM` или `sequence` — хорошая
возможность попрактиковаться в написании общего кода монад. возможность попрактиковаться в написании общего кода монад.
@ -446,7 +445,7 @@ Writer, State) для себя, чтобы понять их лучше. Зат
# Тестирование, тесты, спеки, generative/property тестирование # Тестирование, тесты, спеки, generative/property тестирование
- Это [руководство](https://github.com/kazu-yamamoto/unit-test-example/blob/master/markdown/en/tutorial.md) от Kazu Yamamoto просто фантастичecкое. - Это [руководство](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 в целом, знания, применимые также
@ -498,11 +497,11 @@ Aeson — это стандартное решение для парсинга
## Emacs ## Emacs
- [Alejandro Serras's tutorial](https://github.com/serras/emacs-haskell-tutorial/blob/master/tutorial.md) - [Alejandro Serrass tutorial](https://github.com/serras/emacs-haskell-tutorial/blob/master/tutorial.md)
- [My dotfiles](https://github.com/bitemyapp/dotfiles/) - [My dotfiles](https://github.com/bitemyapp/dotfiles/)
- [Chris Done's emacs config](https://github.com/chrisdone/chrisdone-emacs) - [Chris Dones emacs config](https://github.com/chrisdone/chrisdone-emacs)
## Vim ## Vim
@ -526,7 +525,7 @@ Aeson — это стандартное решение для парсинга
Cabal Hell был проблемой для пользователей Haskell до появления песочниц (sandboxes). Cabal Hell был проблемой для пользователей Haskell до появления песочниц (sandboxes).
Установка вне песочницы происходит в вашу пользовательскую базу данных пакетов. Установка вне песочницы происходит в вашу пользовательскую базу данных пакетов.
Это *не очень* хорошая идея, за исключением основных пакетов, таких как Cabal. alex и happy. Это *не очень* хорошая идея, за исключением основных пакетов, таких как Cabal, alex и happy.
Более ничто не должно быть установлено глобально или в пользовательскую базу данных пакетов, Более ничто не должно быть установлено глобально или в пользовательскую базу данных пакетов,
если вы не уверены в том, что делаете. если вы не уверены в том, что делаете.
@ -616,21 +615,21 @@ cabal haddock --hoogle --hyperlink-source \
Мы обладаем огромными богатствами! Есть три основных вещи, которые я рекомендую: Мы обладаем огромными богатствами! Есть три основных вещи, которые я рекомендую:
* [Haste](http://haste-lang.org/) компилятор Haskell в JavaScript * [Haste](http://haste-lang.org/) компилятор Haskell в JavaScript
 — [Компилятор](https://github.com/valderman/haste-compiler) на github. - [Компилятор](https://github.com/valderman/haste-compiler) на github.
 — Отличное - Отличное
[демо](http://www.airpair.com/haskell/posts/haskell-tutorial-introduction-to-web-apps) [демо](http://www.airpair.com/haskell/posts/haskell-tutorial-introduction-to-web-apps)
Haste с примером проекта. Haste с примером проекта.
* [GHCJS](https://github.com/ghcjs/ghcjs) * [GHCJS](https://github.com/ghcjs/ghcjs)
 — [GHCJS Introduction](http://weblog.luite.com/wordpress/?p=14) - [GHCJS Introduction](http://weblog.luite.com/wordpress/?p=14)
 — [Functional Reactive Web Interfaces with GHCJS and Sodium](http://weblog.luite.com/wordpress/?p=127) - [Functional Reactive Web Interfaces with GHCJS and Sodium](http://weblog.luite.com/wordpress/?p=127)
 — [Writing Atom plugins in Haskell using ghcjs ](http://edsko.net/2015/02/14/atom-haskell/) - [Writing Atom plugins in Haskell using ghcjs ](http://edsko.net/2015/02/14/atom-haskell/)
* [PureScript](http://www.purescript.org/) * [PureScript](http://www.purescript.org/)
 — Не совсем Haskell как Haste или GHCJS, но популярный выбор многих пользователей Haskell - Не совсем Haskell как Haste или GHCJS, но популярный выбор многих пользователей Haskell
 — Написан и вдохновлен языком Haskell - Написан и вдохновлен языком Haskell
 — Попробуйте [PureScript](http://try.purescript.org/) в вашем браузере - Попробуйте [PureScript](http://try.purescript.org/) в вашем браузере
 — Отличное руководство для [начала](http://www.christopherbiscardi.com/2014/06/22/getting-started-with-purescript/) - Отличное руководство для [начала](http://www.christopherbiscardi.com/2014/06/22/getting-started-with-purescript/)
## Какой фронтенд язык мне использовать? ## Какой фронтенд язык мне использовать?
@ -648,15 +647,15 @@ GHCJS и Haste интегрируются лучше с инструментам
# Для более глубокого понимания laziness, NF, WHNF # Для более глубокого понимания laziness, NF, WHNF
- [Notes on lambda calculus](https://vec.io/posts/notes-on-lambda-calculus). - [Notes on lambda calculus](https://vec.io/posts/notes-on-lambda-calculus)
## Исследовательские документы про lazy lambda calculi ## Исследовательские документы про lazy lambda calculi
- [A call by need lambda calculus](http://homepages.inf.ed.ac.uk/wadler/topics/call-by-need.html#need-journal). - [A call by need lambda calculus](http://homepages.inf.ed.ac.uk/wadler/topics/call-by-need.html#need-journal)
- [Demonstrating Lambda Calculus Reduction](http://www.itu.dk/~sestoft/papers/sestoft-lamreduce.pdf) - [Demonstrating Lambda Calculus Reduction](http://www.itu.dk/~sestoft/papers/sestoft-lamreduce.pdf)
- [The lazy lambda calculus](http://www.cs.ox.ac.uk/files/293/lazy.pdf). - [The lazy lambda calculus](http://www.cs.ox.ac.uk/files/293/lazy.pdf)
- [Lazy evaluation of Haskell](http://www.vex.net/~trebla/haskell/lazy.xhtml) - [Lazy evaluation of Haskell](http://www.vex.net/~trebla/haskell/lazy.xhtml)
@ -668,7 +667,7 @@ GHCJS и Haste интегрируются лучше с инструментам
- Хорошее [руководство](http://kukuruku.co/hub/haskell/haskell-testing-a-multithread-application) - Хорошее [руководство](http://kukuruku.co/hub/haskell/haskell-testing-a-multithread-application)
по тестированию и инкрементальной разработке многопоточного приложения в Haskell. по тестированию и инкрементальной разработке многопоточного приложения в Haskell.
- [Functional Reactive Programming](http://www.haskell.org/haskellwiki/Functional_Reactive_Programming) - [Functional Reactive Programming](http://www.haskell.org/haskellwiki/Functional_Reactive_Programming).
# Линзы и призмы # Линзы и призмы
@ -702,7 +701,7 @@ catamorphisms). Знание о том, как реализовать unfold (an
- [An introduction to recursion schemes](http://patrickthomson.ghost.io/an-introduction-to-recursion-schemes/) - [An introduction to recursion schemes](http://patrickthomson.ghost.io/an-introduction-to-recursion-schemes/)
- [Don't fear the cat](http://fho.f12n.de/posts/2014-05-07-dont-fear-the-cat.html) — хорошая демонстрация того, как hylomorphism, это композиция из cata и ana. - [Dont fear the cat](http://fho.f12n.de/posts/2014-05-07-dont-fear-the-cat.html) — хорошая демонстрация того, как hylomorphism, это композиция из cata и ana
- [Recursion Schemes](http://comonad.com/reader/2009/recursion-schemes/) — это - [Recursion Schemes](http://comonad.com/reader/2009/recursion-schemes/) — это
руководство просто замечательно! руководство просто замечательно!
@ -715,15 +714,15 @@ catamorphisms). Знание о том, как реализовать unfold (an
- [Write Haskell as Fast as C](write_haskell_as_fast_as_c.md) - [Write Haskell as Fast as C](write_haskell_as_fast_as_c.md)
- [GHC Wiki: CoreSyn Type](https://ghc.haskell.org/trac/ghc/wiki/Commentary/Compiler/CoreSynType). - [GHC Wiki: CoreSyn Type](https://ghc.haskell.org/trac/ghc/wiki/Commentary/Compiler/CoreSynType)
- [Hackage: GHC Core](https://hackage.haskell.org/package/ghc-core). - [Hackage: GHC Core](https://hackage.haskell.org/package/ghc-core)
- [SO Question: Reading GHC Core](http://stackoverflow.com/questions/6121146/reading-ghc-core). - [SO Question: Reading GHC Core](http://stackoverflow.com/questions/6121146/reading-ghc-core)
- [Haskell as fast as C](http://donsbot.wordpress.com/2008/06/04/haskell-as-fast-as-c-working-at-a-high-altitude-for-low-level-performance/). - [Haskell as fast as C](http://donsbot.wordpress.com/2008/06/04/haskell-as-fast-as-c-working-at-a-high-altitude-for-low-level-performance/)
- [Real World Haskell, Chapter 25: Profiling and Optimizations](http://book.realworldhaskell.org/read/profiling-and-optimization.html). - [Real World Haskell, Chapter 25: Profiling and Optimizations](http://book.realworldhaskell.org/read/profiling-and-optimization.html)
# Тип и теория категорий # Тип и теория категорий
@ -731,14 +730,14 @@ catamorphisms). Знание о том, как реализовать unfold (an
Если вы хотите вникнуть в типы и теорию категорий: Если вы хотите вникнуть в типы и теорию категорий:
- [Catster's Guide](http://byorgey.wordpress.com/2014/01/14/catsters-guide/) и - [Catsters Guide](http://byorgey.wordpress.com/2014/01/14/catsters-guide/) и
[Catster's Guide 2](http://byorgey.wordpress.com/catsters-guide-2/) [Catsters 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, также содержит хорошие ссылки.
- [Categories from scratch](http://science.raphael.poss.name/categories-from-scratch.html), содержит несколько практических примеров. - [Categories from scratch](http://science.raphael.poss.name/categories-from-scratch.html), содержит несколько практических примеров.
@ -751,7 +750,7 @@ catamorphisms). Знание о том, как реализовать unfold (an
- [Awodey](http://ukcatalogue.oup.com/product/9780199237180.do) и - [Awodey](http://ukcatalogue.oup.com/product/9780199237180.do) и
[MacLane](http://www.amazon.com/Categories-Working-Mathematician-Graduate-Mathematics/dp/0387984038). Стандартные книги про теорию категорий. [MacLane](http://www.amazon.com/Categories-Working-Mathematician-Graduate-Mathematics/dp/0387984038). Стандартные книги про теорию категорий.
- [Harper's Practical Foundations for Programming Languages](http://www.cs.cmu.edu/~rwh/plbook/book.pdf) - [Harpers Practical Foundations for Programming Languages](http://www.cs.cmu.edu/~rwh/plbook/book.pdf)
лучшее PL интро к теории типов, которое я читал. лучшее PL интро к теории типов, которое я читал.
- [Type theory and Functional Programming](http://www.cs.kent.ac.uk/people/staff/sjt/TTFP/). - [Type theory and Functional Programming](http://www.cs.kent.ac.uk/people/staff/sjt/TTFP/).
@ -766,7 +765,7 @@ catamorphisms). Знание о том, как реализовать unfold (an
- [Making ad-hoc polymorphism less ad-hoc](http://swizec.com/blog/week-20-making-ad-hoc-polymorphism-less-ad-hoc/swizec/6564). - [Making ad-hoc polymorphism less ad-hoc](http://swizec.com/blog/week-20-making-ad-hoc-polymorphism-less-ad-hoc/swizec/6564).
- [Theorems for Free!](http://ttic.uchicago.edu/~dreyer/course/papers/wadler.pdf). - [Theorems for Free!](http://ttic.uchicago.edu/~dreyer/course/papers/wadler.pdf)
## Initial and Final, DSLs, Finally Tagless ## Initial and Final, DSLs, Finally Tagless
@ -782,36 +781,36 @@ catamorphisms). Знание о том, как реализовать unfold (an
- [Typed Tagless Final Interpreters](http://okmij.org/ftp/tagless-final/course/lecture.pdf). - [Typed Tagless Final Interpreters](http://okmij.org/ftp/tagless-final/course/lecture.pdf).
- [The dog that didn't bark](http://existentialtype.wordpress.com/2011/03/21/the-dog-that-didnt-bark/) less specifically relevant but interesting. - [The dog that didnt bark](http://existentialtype.wordpress.com/2011/03/21/the-dog-that-didnt-bark/) less specifically relevant but interesting.
## Comonads ## Comonads
- [Comonads in Haskell](https://speakerdeck.com/dmoverton/comonads-in-haskell). - [Comonads in Haskell](https://speakerdeck.com/dmoverton/comonads-in-haskell)
- [SO question: Can a Monad be a Comonad](http://stackoverflow.com/questions/16551734/can-a-monad-be-a-comonad). - [SO question: Can a Monad be a Comonad](http://stackoverflow.com/questions/16551734/can-a-monad-be-a-comonad)
## Yoneda / CoYoneda ## Yoneda / CoYoneda
- [SO question: Step-by-step explanation of coyoneda](http://stackoverflow.com/questions/24000465/step-by-step-deep-explain-the-power-of-coyoneda-preferably-in-scala-throu). - [SO question: Step-by-step explanation of coyoneda](http://stackoverflow.com/questions/24000465/step-by-step-deep-explain-the-power-of-coyoneda-preferably-in-scala-throu).
- Свободные монады для Less, серия из трех публикаций от Edward Kmett - Свободные монады для Less, серия из трех публикаций от Edward Kmett
* [Part 1: Codensity](http://comonad.com/reader/2011/free-monads-for-less/). * [Part 1: Codensity](http://comonad.com/reader/2011/free-monads-for-less/)
* [Part 2: Yoneda](http://comonad.com/reader/2011/free-monads-for-less-2/). * [Part 2: Yoneda](http://comonad.com/reader/2011/free-monads-for-less-2/)
* [Part 3: Yielding IO](http://comonad.com/reader/2011/free-monads-for-less-3/). * [Part 3: Yielding IO](http://comonad.com/reader/2011/free-monads-for-less-3/)
## Propositions vs. Judgments (computation) ## Propositions vs. Judgments (computation)
- [StackExchange question: What is the difference between propositions and judgements](http://cstheory.stackexchange.com/questions/9826/what-is-the-difference-between-propositions-and-judgments). - [StackExchange question: What is the difference between propositions and judgements](http://cstheory.stackexchange.com/questions/9826/what-is-the-difference-between-propositions-and-judgments)
- [Lecture notes from a short, three lecture course](http://www.ae-info.org/attach/User/Martin-L%C3%B6f_Per/OtherInformation/article.pdf) - [Lecture notes from a short, three lecture course](http://www.ae-info.org/attach/User/Martin-L%C3%B6f_Per/OtherInformation/article.pdf)
# Зависимая типизация # Зависимая типизация
- [Grokking sum types, value constructors, and type constructors](http://bitemyapp.com/posts/2014-04-05-grokking-sums-and-constructors.html) squint hard. - [Grokking sum types, value constructors, and type constructors](http://bitemyapp.com/posts/2014-04-05-grokking-sums-and-constructors.html) squint hard
- [Lightweight Dependent-type Programming](http://okmij.org/ftp/Computation/lightweight-dependent-typing.html). - [Lightweight Dependent-type Programming](http://okmij.org/ftp/Computation/lightweight-dependent-typing.html)
- [Idris programming language](http://www.idris-lang.org/). - [Idris programming language](http://www.idris-lang.org/)
# Statically linking binaries # Statically linking binaries