Alexander
@saksmt библиотеки resourcet и conduiit смотри
Misha
hoist работает, но это боль страшная как по мне
Alexander
ну у нас с monad-control норм
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
Dmitry @meilalina а может уже известен хотя бы порядок
в прошлом году было порядка 100$ емнип
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 :)
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)
Но это дополнительный контекст, не отраженный в типе. Что напрягает, да
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
Какую prelude юзать? Protolude, base-prelude, classy-prelude или ещё что-то?
я обычно вот так делаю: https://github.com/aelve/guide/blob/master/src/Imports.hs
Artyom
если что-то маленькое, то просто base-prelude, если что-то побольше, то Imports.hs, в котором всё, что мне нравится
Aleksei (astynax)
Прелюдии, это не только импорты
Artyom
в абсолютном большинстве это импорты + прятание вредных импортов типа head + какие-нибудь самописные классы
Aleksei (astynax)
Вот это всё кромеимпортовое и интересно как раз
Aleksei (astynax)
https://guide.aelve.com/haskell/alternative-preludes-zr69k1hc - список прелюдий с плюсами/минусами
Artyom
надо бы там про юнивёрсум написать когда-нибудь
Aleksei (astynax)
Хехе :) Ну пусть ссылка будет
Artyom
в нём всё partial вроде спрятано
Artyom
ну и к нему тоже добавляй импорты
Artyom
если хочется что-то ещё более интересное, то тут уже надо смотреть на конкретную задачу / проект может какая-нибудь numeric prelude зайдёт, может даже foundation у нас собираются foundation пробовать, но пока не попробовали
Aleksei (astynax)
Мне universum нравится в данный момент :)
Кабачок
Извечный вопрос про книги: https://toster.ru/q/465525 Если нету акаунта на тостере могу транслировать ваш ответ.
Aleksei (astynax)
Минус (для меня) Universum в том, что при использовании Control.Lens клэшится куча операторов. А в остальном приятная прелюдия - opinionated, но без фанатизма
Artyom
Минус (для меня) Universum в том, что при использовании Control.Lens клэшится куча операторов. А в остальном приятная прелюдия - opinionated, но без фанатизма
у нас explicit импорты всюду (к сожалению), поэтому такой проблемы нет а в твоём случае проблема решается тем же Imports.hs :)
Aleksei (astynax)
Все линзооператоры импортировать - мучительно
Aleksei (astynax)
Да и прелюдия на то и прелюдия, чтобы импортировать из неё всё
Artyom
не надо все надо из Universum попрятать те, которые там из microlens
Artyom
их не очень много
Aleksei (astynax)
Так и приходится
Artyom
Да и прелюдия на то и прелюдия, чтобы импортировать из неё всё
ну это какой-то радикализм автор какой-нибудь прелюдии не знал, например, что я пишу gtk-приложение и мне его on вообще не нужен, а нужен гтк-шный