Alexander
@saksmt библиотеки resourcet и conduiit смотри
Misha
hoist работает, но это боль страшная как по мне
Alexander
ну у нас с monad-control норм
Kirill
Alexander
в большинстве случаев такие структуры только IO должны знать или если там forall m . Monad m => написать можно
Misha
Вообще мы еще пользуемся параметризуемой базой
Misha
типа там
Misha
не IO, а что-нибудь другое, что в тестах меняется
Misha
поэтому всякие такие конфигурации обрастают дичью
Alexander
ну я толковых вещей с подменой base monad в тестах особо не видел, не сталкивался не знаю
Alexander
ха... сотрудники из швейцарии находят первую озвученную цену на f(by) достаточно большой
Quet
а какая цена? )
Alexander
там висело что-то вроде 930$ но комментариев от организатором не было, может и ошибка
Alexander
щас написано скажут позднее
Misha
функция от беларусских рублей? 🤔
Quet
930$ за f.by это как-то дохера
Alexander
Dmitry @meilalina а может уже известен хотя бы порядок
Alexander
учитывая изменение бел рублей - функция вполне возможно
Misha
Я погуглил — можно было название и более адекватным придумать конечно
Andrei
Misha
А че, в чем соль конфы? Какие спикеры хорошие есть?
Andrei
снойман пойдёт?
Misha
Ну так
Misha
Я посмотрел предыдущий год уже, да.
Andrei
https://twitter.com/ruHaskell/status/910124053624696832 пока только вот так
Alina
Привет! Да, это ошибка, прошу прощения. Будет цена примерно как и в прошлом году
Aleksei (astynax)
Отлично!
Alexander
@meilalina спасибо!
кана
Хм, могу предположить, что писать
f x = g (runX x)
зачастую предпочтительнее, чем
f (X x) = g x
Из-за лени (ну и немного для инкапсуляции).
Ранее я часто использовал именно второй вариант, который субъективно проще выглядит, и не понимал, почему так часто используют первый
Aleksei (astynax)
почему? Матчинг точно так же не будет производиться. пока кто-то не сфорсит вызов f и g
кана
То есть разницы нет?
Aleksei (astynax)
Ну и компилятору всяко виднее, как такое оптимизировать
Aleksei (astynax)
Нет
Aleksei (astynax)
(но это не точно)
Artyom
если X – это ньютайп, то вроде бы разницы вообще ровно ноль
и лень на ньютайпы не работает
Aleksei (astynax)
первый лучше хотя бы тем, что можно написать
f = g . runX :)
Misha
Artyom
> newtype X a = X {runX :: a}
> let f (X x) = 0
> f undefined
0
Aleksei (astynax)
ага, матчинг не форсится, если матчимое не используется нигде
Artyom
нет
Artyom
> data Y a = Y {runY :: a}
> let g (Y y) = 0
> g undefined
*** Exception: Prelude.undefined
Artyom
это конкретно фишка ньютайпов
Artyom
• для newtype, wrap/unwrap ничего не делают в рантайме (они всего лишь меняют тип в компайл-тайме)
• а для data – делают
Aleksei (astynax)
Хмм... ньютахп выродится в f x = 0
Aleksei (astynax)
λ> data Y a = Y { runY :: a }
λ> let f (Y y) = 0
λ> f (Y undefined)
0
кана
Как-то это не очень интуитивно. А, нет, таки норм, сматчил, но значение не достал.
А ньютайп попросту и матчить не нужно
Aleksei (astynax)
Если знать, во что превращаются ньютайпы, то всё логично
Aleksei (astynax)
Но это дополнительный контекст, не отраженный в типе. Что напрягает, да
Andrew
Andrei
видел ли кто-нибудь из присутствующих http://www.luna-lang.org вживую?
кана
Полгода назад подписался, новостей и альфы так и не было
Alexander
Какую prelude юзать? Protolude, base-prelude, classy-prelude или ещё что-то?
Зигохистоморфный
первую)
Anatolii
а как же https://github.com/serokell/universum ?:)
Alexander
universum, на него хоть ругаться тут можно
Alexander
или base, говорят вполне терпим
Cheese
или вообще никакого
Artyom
если что-то маленькое, то просто base-prelude, если что-то побольше, то Imports.hs, в котором всё, что мне нравится
Aleksei (astynax)
Прелюдии, это не только импорты
Artyom
в абсолютном большинстве это импорты + прятание вредных импортов типа head + какие-нибудь самописные классы
Aleksei (astynax)
Вот это всё кромеимпортовое и интересно как раз
Aleksei (astynax)
https://guide.aelve.com/haskell/alternative-preludes-zr69k1hc - список прелюдий с плюсами/минусами
Artyom
надо бы там про юнивёрсум написать когда-нибудь
Artyom
Aleksei (astynax)
Хехе :) Ну пусть ссылка будет
Artyom
Artyom
в нём всё partial вроде спрятано
Artyom
ну и к нему тоже добавляй импорты
Artyom
если хочется что-то ещё более интересное, то тут уже надо смотреть на конкретную задачу / проект
может какая-нибудь numeric prelude зайдёт, может даже foundation
у нас собираются foundation пробовать, но пока не попробовали
Aleksei (astynax)
Мне universum нравится в данный момент :)
Кабачок
Извечный вопрос про книги: https://toster.ru/q/465525
Если нету акаунта на тостере могу транслировать ваш ответ.
Aleksei (astynax)
Минус (для меня) Universum в том, что при использовании Control.Lens клэшится куча операторов. А в остальном приятная прелюдия - opinionated, но без фанатизма
Artyom
Aleksei (astynax)
Все линзооператоры импортировать - мучительно
Aleksei (astynax)
Да и прелюдия на то и прелюдия, чтобы импортировать из неё всё
Artyom
не надо все
надо из Universum попрятать те, которые там из microlens
Artyom
их не очень много
Aleksei (astynax)
Так и приходится