Git Product home page Git Product logo

ru-haskell-book's Introduction

Учебник по Haskell

ПРОЕКТ ЗАМОРОЖЕН. НЕ ОБНОВЛЯЕТСЯ. READ ONLY

Вы попали в репозиторий учебника по Haskell, здесь живут исходные файлы книги, почитать саму книгу можно online. Там же находятся pdf, epub и архив с исходным кодом примеров.

Буду рад вашим комментариям и предложениям.

связь: [email protected]

ru-haskell-book's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ru-haskell-book's Issues

GHC is not developed in Microsoft Research only

На домашней странице написано: "Основной компилятор языка GHC разрабатывается в Microsoft Research, но несмотря на это легко доступен в интернет."

В Microsoft Research работает SPJ, но это далеко не значит что GHC разрабатывается там.

9

передовать
больще

Опечатки

pandoc/12.txt:
Строки 52, 62, 63:
foldNat надо поменять на foldBool

Экспорт в html и другие форматы

Было бы неплохо увидеть книгу в различных форматах (html, mobi, epub), это позволит читать ее на мобильных устройствах и электронных книгах.

8

8.txt

настройки - английское c
из-какого-нибудь
воможность
ввнутри

tyop

3.txt

столько вот

по-подробнее
этого этого
перечисленые
по-сложнее
неокоторого
Помотрим
угдайте

typo: wrong boundaries for Int

http://anton-k.github.io/ru-haskell-book/book/2.html :
"Числа из типа Int ограничены. Каждое число занимает определённый размер в памяти компьютера. Диапазон значений для Int составляет от -229 до 229-1" .

According http://hackage.haskell.org/package/base-4.6.0.1/docs/Data-Int.html :

data Int Source

A fixed-precision integer type with at least the range [-2^29 .. 2^29-1]. The exact range for a given implementation can be determined by using minBound and maxBound from the Bounded class.

Опечатка

"Этот класс устарел, было бы лучше сделать отельный класс для сложения и вычитания и отдельный класс для умножения."

"отельный" --> "отдельный"

Глава 12, Структурная рекурсия

К определению функций unfoldr и unfoldNat нужно добавить в конец . f, а то maybe работает на Maybe a, а не на а, т.е.

unfoldr :: (b -> Maybe (a, b)) -> b -> [a]
unfoldr f = maybe [] (\(a, b) -> a : unfoldr f b) . f

unfoldNat :: (a -> Maybe a) -> a -> Nat
unfoldNat f = maybe Zero (Succ . unfoldNat f) . f

tyap

7.txt

по-громче
по-тише
по-подробнее
поддервьев
передовать
первый первый
предостваления
создёт
имеративном
пострения
по-близости
выбрем

tyopp

5.txt

нарошно - 2 раза
то посмыслу
обудим
несоколько

lines

4.txt

Функция line разбивает строку на список строк. Эти строки были разделены в исходной строке символом
переноса ’\n’.


это функция lines

Предисловие. Основные понятия. Невнятно сформулированы мысли - похоже на неудавшийся перевод

Только начал читать и показалось, что имею дело с переводом:

Чистые функции – это правдивые функции. Их основная особенность в том, что для одинаковых ответов на их вопросы, они скажут одинаковые ответы. Функции с побочными эффектами так не делают, например если мы спросим у такой функции какого цвета глаза у Коли?
Что значит "правдивые"? Может быть "настоящие"? Что значит для "одинаковых ответов на вопросы"? Лучше сформулировать так: для одних и тех же входных данных(значений) чистые функции всегда вернут одни и те же выходные значения? В последнем предложении не хватает пунктуации, по-моему. Вообще все, что касается определения "чистых ф-ций", в этом параграфе сформулировано довольно странно.

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

8 глава, IO, первое упражнение

Такой текст: "Это упражнение даёт вам возможность почувствовать преимущества чистого кода. Вспомните функцию поиска корней методом неподвижной точки (этот пример встречался в главе о ленивых вычислениях)."

Но в нынешней версии глава о ленивых вычислениях после главы IO.

c -> c

6.txt

Русская С - D1
Англ С - 43

Слово "Специальными" начинается с английской Це :)
c-c-c

EPUB-книга битая

Пробовал загрузить книгу https://anton-k.github.io/ru-haskell-book/files/ru-haskell-book.epub на сервис для чтения книг Bookmate. Не загрузилась. В техподдержке сказали, что проблема с самой книгой, так как им самим не удалось загрузить её на сервис. Полагаю нужно переконвертировать этот файл.

Отступы != табуляция

http://anton-k.github.com/ru-haskell-book/book/1.html#двумерный-синтаксис - почему-то настойчиво используется термин "табуляция", хотя по сути там отступы, к тому же отступы пробелами являются вполне валидными (я, к примеру, табуляцию вообще стараюсь не использовать).
Предлагаю не вводить читателя в заблуждение

13

вцелом ?
Чтож
направдению
посольку
крайн

Появился epub

Чёрно белое, кроме картинок. Скорее всего не отображаются сложные
символы, которые про теоркат.

Глава 10, Реализация Haskell в GHC

параграф "Фазы компиляции"

"Ссылка без тильды говорит: попытайся применить это правило как можно раньше до тех пор пока не на-
ступит данная фаза, далее не применяй. Ссылка с тильдой говорит: подожди до наступления этой фазы."

Судя по документации по ghc, по смыслу все наоборот:

из 7.17.1. Syntax

"The "[2]" means that the rule is active in Phase 2 and subsequent phases. The inverse notation "[~2]" is also accepted, meaning that the rule is active up to, but not including, Phase 2. "

из 7.16.5.5. Phase control
" "INLINE[k] f" means: do not inline f until phase k, but from phase k onwards be very keen to inline it."

В конце параграфа предложение "Составим правила,
которые будут проводить оптимизацию слияние для наших списков, они будут заменять последовательное
применение mapL на один mapL c композицией функций, также промежуточный список будет устранён в
связке foldrL/mapL." лишнее

Глава 11, Ленивые чудеса

  1. В задаче о водосборе

тип LabelMap не определен.

Видимо, должно быть type LabelMap = Array Coord Char

  1. Степенные ряды

В книге:

class Fractional a => Fractional (Ps a) where
(0 :+: fs) / (0 :+: gs) = fs / gs
(f :+: fs) / (g :+: gs) = q :+: ((fs - q .* gs)/(g :+: gs))
where q = f/g
fromRational x = p0 (fromRational x)

Опечатка. Вместо class нужно instance. Кроме того, в контекст нужно добавить Eq, т.е. (Fractional a, Eq a).

  1. Ленивее некуда

time :: Fractional a => [a]
time = [0, dt ..]

необходимо в контекст добавить класс Enum, т.е. (Fractional a, Enum a)

Спасибо за замечательную книгу!

10

урвнений
эфективно
анотации
многие многие
бибилиотекам
выражнение
покколение
чистаете
связаные
статиситика
медленей
знчения
Естесственно
павые
некотрого
отклдывать
расчитываем - надо два с

Какие пакеты нужно установить для сборки epub ?

Установил pandoc, но потребовались дополнительные модули, сначала одно, потом другое. Определял с помощью Hayoo какой еще пакет нужно поставить, но тут Haskell мне сказал

% runhaskell Epub.hs

Common.hs:8:18:
    Could not find module `System.IO.Strict'
    Use -v to see a list of the files searched for.

Из какого пакета импортируется System.IO.Strict ? Есть два. strict и strict-io

Наверно лучшим решением был бы cabal файл.

Опечатки

https://github.com/anton-k/ru-haskell-book/blob/master/tex/11.tex
Если у клетки нет сосед**е** с высотой меньше
da**_r**_ta Array i a

getSink :: HeightMap -> Coord -> Maybe Coord

которая принимает карту _стоков_ и возвращает карту _стоков_

https://github.com/anton-k/ru-haskell-book/blob/master/tex/13.tex
При этом у _на_ два варианта.

И что за странности с функцией shuffle?

shuffle :: Int -> IO Game
shuffle :: Game -> IO Game

она поменяла тип без всякого предупреждения. А ведь в коде везде передавались числа, а не игры.
Зато появился randomGame:

randomGame :: Int -> IO Game

он делает всё, что делал первоначальный shuffle.

12

сдесь
слкедующий
однин
еслим

11

варгументе - пробел

Поправки и дополнения

Как раз собирался заняться более плотным знакомством с Хаскелем, а тут мне попадается этот учебник. Весьма удобно.
Я произвёл небольшую вычитку учебника. Надеюсь, эти замечания помогут сделать его лучше.

Теперь мы имеем целых четыре слова! Тем не менее, ушли мы не далеко, и два новых слова, в сущности, не делают язык выразительнее. Такие синонимы называют . Это значит, что одним словом мы будем обозначать некоторую комбинацию других слов. В данном случае комбинации очень простые.

Пропущено слово, наверное?

Подсветка синтаксиса для Haskell по умолчанию есть в редакторах Vim, Emacs, gedit, yi.

Ещё бы добавить geany. Не знаю, известен ли он настолько, чтобы упоминать.

Для проведения декомпозиции по нескольким переменным можно воспользоваться кортежами. Например определим знакомую функцию равенства для Nat:
instance Eq Nat where
    (==) a b =
...

Это выдаёт ошибку при указанном выше определении Nat:

    Overlapping instances for Eq Nat
      arising from the 'deriving' clause of a data type declaration
    Matching instances:
      instance Eq Nat -- Defined at Nat.hs:4:21
      instance Eq Nat -- Defined at Nat.hs:60:10
    When deriving the instance for (Eq Nat)

Однако deriving (Show, Ord) (без Eq в определении) позволяет скомпилировать модуль без ошибок. Возможно, это не является багом, поскольку я мог пропустить другое определение класса где-нибудь раньше.

Я продолжу вычитку, если вы не против.

енщз

6.txt

еще

\Types{State, cостояние} - первое с английское
\Types{Writer, знчения-накопители}

tyops

16.txt
незачёркнутое
рекусии

17.txt
хотим хотим
вернт

19.txt
бибилотеку

21.txt
вынужденны

Ещё замечания

По http://anton-k.github.com/ru-haskell-book/book/2.html#логические-значения:

  • В предложении "Но не совсем обычное синоним должен быть однострочным." не хватает знака препинания (имхо там можно поставить как тире так и многоточие)
  • С другой стороны это замечание некорректное, я вполне могу вбить в GHCi, например, let f 1 =2; f 2 = 3 или использовать многострочный синтаксис через :{

fix ident

4.txt

надо сдвинуть вправо, как упражнения в 5-ой главе.

Глава 13, опечатка

В книге

nextMoves g = filter (within . moveEmptyTo . orient) allMoves
  where moveEmptyTo v = shift v (emtyField g)
       allMoves = [Up, Down, Left, Right]

В emtyField не хватает p, т.е. должно быть emptyField

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.