Алексей
Подобную байду удобно собирать в одну структуру: foo def
Arthur
Этот курс чем то лучше или хуже того, который в вышке читали? @bravit111
Этот курс рассчитан на людей, которые уже знакомы с ФП, и, в частности, с Хаскеллем. А курс в Вышке, соответственно, рассчитан на студентов, которые знают императивные языки, но при этом им надо объяснять самые азы ФП - начиная от того, что такое чистые функции, и заканчивая тем, что такое функторы, монады и т.д. Т.е. этот курс он хардкорно про Идрис, а тот, который в Вышке - больше вводный в тему ФП на примере Идриса. И тот, и другой хороши для своей аудитории.
Cheese
а можно вообще никакого дефолта не экспортировать
sheet = mkSheet $ do
cellValueAt (1, 2) ?= CellDouble 42.0
cellValueAt (3, 2) ?= CellText "foo"
Leonid 🦇
А может и вправду сделать рекорд функций вместо тайпкласса?
Leonid 🦇
Что-бы не превратиться в есод
Leonid 🦇
В общем пишу я либу которая будет oauth2 (openid?) сервером. И например нужно абстрактнуть мне бэкэенд для хранения юзеров.
Leonid 🦇
И абстрактнуть как делается аутентификация - куки там всякие, хтмл с формочками
A64m
хаскель слишком неразвитый язык для такого
Leonid 🦇
И не хочется всё это навешивать на m
A64m
ну, экспериментальные-то фичи для этого есть, но они не готовы для продакшона
Leonid 🦇
вот такое есть http://hackage.haskell.org/package/snap-1.1.0.0/docs/Snap-Snaplet-Auth.html#t:AuthManager
Kirill
Leonid 🦇
нет, я хочу сам Auth сделать.
Leonid 🦇
но думаю вот какой делать апи
Leonid 🦇
наверно сделаю всё через рекорд, и будет initAuth :: Config -> IO AuthEnv, runTokenEndpoint :: AuthEnv -> Wai.Application
Leonid 🦇
ну и т.д.
Leonid 🦇
только в снапе зачем-то existential сделан
Aliester
http://loveplusplus.ru/
Leonid 🦇
Denis
Cheese
Ю ли я? 🤔
Java?
A64m
Leonid 🦇
Модули сделают из хаскеля энтерпрайз?
A64m
не сделают
Leonid 🦇
Может и вправду прикрутить рюкзак...
Denis
для чего хорош бэкпак?
Denis
я как-то мимо всей это модульной темы
A64m
теоретически, вот для обсуждаемого он и нужен, где в хаскеле всякие рекорды с функциями надо передавать или адовые классы писать а-ля ЛистЛайк и в обертки оборачивать
практически - не известно, может и ни для чего
Denis
Denis
кстати надо багу зарепортить..
Denis
спасибо, погляжу
A64m
или вот очень простой для начала https://github.com/ezyang/backpack-regex-example
Denis
меня издавна терзал вопрос чем же хороши ML модули, но я так и не удосужился разобраться
A64m
да с этим и эмелисты не то чтобы разобрались
Dmitry
они не то, что бы хороши
Dmitry
они довольно удобны
Dmitry
своей параметризацией
Dmitry
это то, что на нашем уютненьком получается нецелевым использованием TF/DF
Dmitry
и тайпклассов
Dmitry
что намекает на то, что это немножко неправильный инструмент для того, что хочется
Ю ли я? 🤔
А можно какой-нибудь минимальный пример, где они превосходят типоклассы?
Dmitry
"превосходят" например, в чём?
A64m
если надо заменять импорты одних модулей на другие - они удобнее тайпклассов где надо будет для такого всякие ужасы с плохим выводом типов, к тому же, городить . Но если надо в одном куске кода разные инстансы применять - классы удобнее
Ю ли я? 🤔
Например, по количеству бойлерплейта :)
Dmitry
ну например, простые вещи - нам нужно значения одних и тех же типов держать в map или еще каком словаре, но по разным ключам
Dmitry
в ocaml это просто решится передачей другой функции сравнения
Dmitry
нам же тут придется делать newype обёртки
Cheese
Kirill, вот как можно избавиться от def https://gist.github.com/cblp/e7d930f30d10b144318305eb24d283eb
Dmitry
модули в окамл решают задачу модульности (!) и параметризации. в хаскеле же мы решаем эти задачи при помощи использования каких-то артефактов теории, при этом, как эти задачи решать правильно каждый решает для себя сам
Dmitry
периодически порождая адские костыли - например, TF или DF, неинъективность и проблемы с выводом TF или же какие-то дикие типы при использовании DF
Dmitry
всё это выглядит довольно костыльно.
Dmitry
и наводит на мысли, что используется не совсем верный инструмент для достижения желаемой цели
Ю ли я? 🤔
TF DF - это что? Type/data ...?
Denis
ну это павертулс все-таки, думаю в хаскелле помощнее
Dmitry
type families / data families
Denis
type family/data family
Dmitry
первые попытки использовать их в кач.ве типизированных модулей, кмк, у меня были где-то лет пять назад
Dmitry
тогда ничего не получилось, сейчас получается
Dmitry
при этом я не могу сформулировать, что я не так делал пять лет назад, и что я так делаю сейчас
Kirill
можешь нарисовать issue на предмет возможного избавления
Kirill
сильной мотивации это сделать я не вижу
Cheese
Kirill
абгемахт
Denis
Denis
из этого крайне сложно четкую картинку обрисовать, чтобы взять и объяснить кому-то
Dmitry
ну вот эти все практики - "как решать простые инженерные (ну или даже гуманитарные, если рассматривать это как специального вида литературу) задачи при помощи системы типов хаскеля" - они какие-то непрозрачные
Dmitry
где-то надо повесить плакат - Используй ScopedTypeVariables + опять забыл что - что бы бороть сколемы
Dmitry
кстати, повешу - вот опять забыл
Alexander
мы лучше знаем что автор хотел сказать своим произведением!11
Leonid 🦇
"Книга лучше"?
kosc
Так вот что авторы хотят сказать своими фильмами по книгам!
Alexander
книгами по фильмам по книгам
Ю ли я? 🤔
\me посмотрел бы экранизацию "Learn you a Haskell"
Kirill
HoTT тоже неплохо будет, наверное