Dmitry
Замени в своем сообщении тайп фамилис на хаскелл
Dmitry
Смысл остался тот же?
Quet
ну не, это ж хардкор хаскел
Quet
даже вопрос не в этом был я верю что по тф защитили пару диссеров но ты их находишь полезными в повседневном коде?
Anonymous
Ребят, посоветуйте нормальный учебник по Хаскелю. В бекграунде elisp, erlang, elixir (😊 ), Elm, куча императивной фигни. Learn you a Haskell кажется непростительно простым. Что делать? Читать код?
Konstantin
писать код
Anton
http://haskellbook.com
Anonymous
http://haskellbook.com
Содержание выглядит неплохим, спасибо.
Serghei
Dmitry
@quetzal посмотри видео от авторов серванта, там они объясняют, почему он такой и зачем он им такой нужен. ну, а где сервант, там тайплевел
Dmitry
@quetzal https://www.youtube.com/watch?v=gMDiKOuwLXw
Dmitry
у нас из API серванта выводится к нему generic client и generic cli
Serghei
как выходной фик кто пишет. зато как рабочий день - сразу видно кто как работает )
Dmitry
т.е аналог можно сделать на значениях, но ADT же закрытые. а если нам нужна открытость - то всё. тайпклассы и семейства типов
Dmitry
@serghei_k кто в шабат работал, тому можно в понедельник потупить
Ilya
А вот такой вопрос возник про newtype, может кто-то объяснит. Почему нельзя вместо него писать просто data? Зачем новое слово? Неужели нельзя научить компилятор самостоятельно находить все data вида "один конструктор с одним полем" и самостоятельно проводить ту оптимизацию, ради которой, как утверждается, используется newtype? А все эти приятности с лучшей читаемостью кода и множеством инстансов для одного типа можно делать и с data.
Ilya
То есть если я возьму какой-нибудь проект, заменю там все newtype на data, а потом пропатчу компилятор так, чтобы он самостоятельно заменял data на newtype везде, где это возможно, то что изменится? Или если так не получится, то почему?
Ilya
А, strict и lazy. Странно, что на русском языке про это не написано:) По-крайней мере в тех местах, где я читал. Спасибо
Vasiliy
спасибо, я тоже не знал)
Anonymous
Отличный пример того, что читать нужно на английском (и документацию), потому что переводы или пересказы могут что-то потерять.
Misha
вот кстати да
Misha
хаскель и так не бог весть как популярен, так что искать по нему русскоязычную литературу --- это тупик
Misha
она найдется конечно
Misha
но на порядки меньше
Donat
Кто-нибудь пользовался turtle https://hackage.haskell.org/package/turtle?
Dmitry
да
Dmitry
ну что, иммутабельная самоварная база + uniplate довольно-таки рулят. и про простоте. и по скорости работы. интересно, в чём подвох такого подхода https://gist.github.com/voidlizard/2275c795afb88a48809a8988d4584735
Alexander
(D undefined) не тоже самое что (N undefined)
Alexander
foo (D x) = y, при x=_|_, будет y
Alexander
А для newtype будет _|_
Anonymous
Это другие источники, которые не пересказывать и переводы, все же
Я не думаю, что автор брал это из головы, где-то же он это прочитал.
Alexander
но на порядки меньше
Если не считать статьи но на порядок меньше литературы быть не может, т.к. 10 источников на английском нету
Serghei
1 порядок это "в 10 раз"
Alexander
Нет, в 10 раз это в 10 раз
Alexander
На на 1 порядок это в scientific notation будет в e следующая цифирь грубо говоря
Alexander
Впрочем в данном случае это не важно
Alexander
Т.к. 10 нормальных источников на английском нет
Alexander
А на русском их больше 1
Alexander
(если не считаем статьи и диссеры)
Vladimir
1 порядок это "в 10 раз"
Я всегда думал, что "порядок" всегда зависит от шкалы сравнения
Alexander
Ну это находится в следующем классе порядка
Alexander
Тк мы пользуемся 10чной системой можно на это скидку сделать
Alexander
Важно что на порядок это значит, что величины разных порядков
Alexander
Например 9 и 10 разных порядков
Misha
Да не принципиально вообще. Просто гораздо логичнее потратить время на то, чтобы научиться читать англоязычные источники, чем на то, чтобы найти русскоязычные. Хотя их читать легче и приятнее, чего уж
Alexander
с этим солгасен
Donat
Подскажите, что значит часть в скобках? import Data.Semigroup ((<>))
Vladimir
оператор просто такой
Vladimir
такой же как +
Ilya
Импортируют оператор
Vladimir
или >>=
Vladimir
просто <>
Donat
двойные скобки для экранирования?
Vladimir
lf
Vladimir
да
Donat
спасибо
Vladimir
операторы при импрорте надо в скобки брать
Donat
не могу понять, в чем проблема stack: Error: While constructing the build plan, the following exceptions were encountered: optparse-applicative-0.12.1.0 must match >=0.13 && <0.14 (latest applicable is 0.13.0.0)
Donat
он считает 0.13.0.0 не подходящим под условие?
Anatolii
у тебя вот такой стоит optparse-applicative-0.12.1.0
Anatolii
на стэкэдже 0.12
Anatolii
а уже есть 0.13
Anatolii
попробуй запусти stack solver
Donat
я установил 0.13.0.0 в global project, но он его не видит
Anatolii
запусти stack solver --update-config
Anatolii
у тебя со стеком нету никакого глобального проекта
Anatolii
в данному случае надо в stack.yaml прописать зависимость
Anatolii
в extra-deps добавить
Anatolii
extra-deps: - optparse-applicative-0.13.0.0
Anatolii
вот та команда выше в stack.yaml проекта добавит вот такое
Anatolii
и тогда stack install будет брать эту зависимость вместо той которая сейчас на stackage
Anatolii
брать он ее будет с hackage
Donat
а долго эта команда выполняется? она у меня что-то замолчала после 2017-02-01 14:46:24.522942: [info] Using configuration file: .stack/global-project/stack.yaml
Anatolii
а это в папке проетка надо