Alexander
ag вроже ж на сишке
A64m
А RealFloat вообще глумление над логикой. decodeFloat :: a -> (Integer, Int) и isNaN в одном тайпклассе
да, классы там странноватые, мягко говоря, но загадка разгадана теперь
Vladislav
какая загадка?
A64m
впрочем, может это байка, надо соотвествующий пропозал для схемы раскопать
Vladislav
т.е. медленнее?
сейчас бы растовца сюда, весь город бы обогрели
Alexander
ну раст стабильно медленнее сишки. с чего бы ему быстрее быть
A64m
какая загадка?
чей сумрачный гений их придумал (придумали схемачи)
Vladislav
ну раст стабильно медленнее сишки. с чего бы ему быстрее быть
у него запрещен aliasing, значит оптимизатор может быть агрессивнее, вот с чего
Vladislav
а с чего ему быть медленнее?
Vladislav
Почему?
потому что content-addressable storage для пакетов
Vladislav
хэшами
Alexander
с компилятора в которого не вложенно достаточное количество человеколет
Vladislav
а, ну это да.
Кабачок
Можно сделать костыль типа: -- Классы с одним методом class Foo ... class Bar ... -- Класс с кучей методов, вроде Num class (Foo ..., Bar ..., ...) => Baz ... -- Класс-костыль, который позволяет написать все реализации в одном инстансе class Qux ... instance Qux ... => Foo ... instance Qux ... => Bar ...
Alexander
он будет лучше если только не весьма сложной и высокоуровневой программе
Антон
оптимизатор это знание не использует
Из-за багов в LLVM. И это печально, конечно
A64m
не сделано просто
Anatolii
в кастомных прелюдах обычно делают гайд как на нее перейти, надо еще гайд как с нее свалить
Алексей
Это для дефолтной
Антон
Я все негодую, что видеодокладов нет по Haskell на русском
А зачем вообще видеодоклады по ЯП нужны? Только время зря тратить. Слайдов с заметками достаточно
Anatolii
Товарищи из serokell, а почему вы из Data.List забыли половину реекспортнуть?
Anatolii
ладно, не половину - почему groupBy забыли?
Anatolii
а groupBy?
Евгений
Из-за багов в LLVM. И это печально, конечно
Чо за баги? Кстати был же какой-то REIR llvm'а, он загнулся?
Anatolii
а еще у меня вопрос, мне бы вот из пакета Data.Map хотелось бы insertWith - его как-то через Foldable можно выразить?
Anatolii
наверняка можно конечно, просто вопрос какой ценой
кана
как в хаскеле принято использовать env-specific config'и? я раньше пользовался такой связкой https://github.com/stackbuilders/dotenv-hs + https://github.com/pcapriotti/optparse-applicative т.е. как-то так: mkParser ∷ Config → Parser Config mkParser defs = Config <$> strOption ( long "scheme" <> short 's' <> metavar "SCHEME" <> value (scheme defs) -- т.е. вот тут просто просто дефолтное значение устанавливал <> showDefault <> help "Protocol (sheme): https or http" ) data Env = Dev | Test | Prod load ∷ Env → IO Config load env = do void $ loadSafeFile ".scheme.yml" config defs ← Config.mkDefs execParser $ Config.mkUsage defs where config = defaultConfig { configPath = [fileName] } fileName = ".env" ++ envPostfix env mkDefs ∷ IO Config mkDefs = do scheme ← fromMaybe "localhost" <$> lookupEnv "HOST" ... return Config{..} но мне это не очень нравится, наверное есть нормальный/канонический какой-то способ хм, есть еще https://github.com/dmjio/envy
Антон
Чо за баги? Кстати был же какой-то REIR llvm'а, он загнулся?
*RIIR. Но да, походу, загнулся. Оно и понятно — LLVM очень уж крупный проект
Евгений
Ivrything???
Евгений
REIR == Rewrite everyting in rust
Антон
Nope
Антон
Мем только RIIR = rewrite it in rust
Dmitrii
в кастомных прелюдах обычно делают гайд как на нее перейти, надо еще гайд как с нее свалить
Добрый вечер. Вообще-то, в universum есть гайд, как на него перейти.
Dmitrii
а groupBy?
groupBy неэффективный стандартный. Про это было issue: https://github.com/serokell/universum/issues/64
Anatolii
Добрый вечер. Вообще-то, в universum есть гайд, как на него перейти.
я ж написал что нужен гайд как перейти на обычную прелюду назад, извини если обидел, это была шутка
Dmitrii
Окей, ничего страшного) Пока никому их тех, кто использовал universum не понадобилось перейти обратно, поэтому никто такой гайд не запросил!
Anatolii
ну вот мне нужен groupBy сейчас
Anatolii
сделать я это не могу
Антон
ну вот мне нужен groupBy сейчас
https://github.com/serokell/serokell-util/issues/46
кана
из base экспортни временно
Anatolii
∀нтон я гаходил эти issue
Anatolii
просто как-то теряется смысл кастомной прелюды
Dmitrii
Из-за чего теряется смысл?
Anatolii
ну я взял кастомную прелюду чтобы все общие функции были в ней
Anatolii
https://github.com/serokell/serokell-util/blob/master/src/Serokell/Util/Group.hs
Anatolii
получается надо делать еще импорты
Anatolii
и я не очень понимаю почему вот этот модуль лежит не в universum
Антон
Делай свою кастомную прелюдию)
Anatolii
ну мне тут советовали чужие не юзать когда я начинал с universum
Dmitrii
и я не очень понимаю почему вот этот модуль лежит не в universum
Ну, тут такое дело, что у кастомной прелюды universum есть чёткая и определённая цель. Поскольку это кастомная прелюда, то она не должна меняться часто. Туда должны попадать только те вещи, про которые точно известно, что они хорошие и нужны всем и они сделаны правильно (по крайней мере хочется в это верить). Касательно функций groupBy — точно не ясно, что они должны быть сделаны именно таким образом. Сейчас там HashMap, но вдруг лучше Map? (там во время разработки cardano-sl были обсуждения, что HashMap на самом деле в некоторых ситуациях намного хуже Map). А может быть лучше придумать трюк,чтобы эти функции были полимофрными, и пользователь сам мог выбрать: Map или HashMap? А может быть вообще хочется какие-то трюки с type family, чтобы ещё IntMap поддержать? Короче, кажется, что эта часть ещё раз 10 поменяется, и не хочется часто вводить breaking changes в прелюдию. Ибо обычно у людей от этого очень бомбит.
Anatolii
Ну, тут такое дело, что у кастомной прелюды universum есть чёткая и определённая цель. Поскольку это кастомная прелюда, то она не должна меняться часто. Туда должны попадать только те вещи, про которые точно известно, что они хорошие и нужны всем и они сделаны правильно (по крайней мере хочется в это верить). Касательно функций groupBy — точно не ясно, что они должны быть сделаны именно таким образом. Сейчас там HashMap, но вдруг лучше Map? (там во время разработки cardano-sl были обсуждения, что HashMap на самом деле в некоторых ситуациях намного хуже Map). А может быть лучше придумать трюк,чтобы эти функции были полимофрными, и пользователь сам мог выбрать: Map или HashMap? А может быть вообще хочется какие-то трюки с type family, чтобы ещё IntMap поддержать? Короче, кажется, что эта часть ещё раз 10 поменяется, и не хочется часто вводить breaking changes в прелюдию. Ибо обычно у людей от этого очень бомбит.
Спасибо за такой развернутый овтет
Dmitrii
serokell-util вообще по-хорошему должен называться universum-extra, но исторически сложилось, что он появился раньше, и там бардак небольшой. В последнее время были предприняты некоторые усилия, чтобы эту помойку расчистить, но пока не полностью всё хорошо сделано.
Yura
СТРЕЛОЧКА НЕ РАЗВОРАЧИВАЕТСЯ
у меня этот мем ассоциируется только с феминизмом 3й волны
Aleksei (astynax)
импорты в elm неплохо сделаны, имхо (это я к сильно выше упомянутому обсуждению оных в хаскеле)
Aleksei (astynax)
В Elm модуль всегда импортирован qualified, но опционально - по короткому имени. И экспортируется только то, что явно упомянуто, либо всё - опять же, если это явно указано. Вот hiding нет, что могло бы помешать. Но т.к. большая часть модулей всё равно только через qualified вызовы испольузется, то конфликты крайне редки
Aleksei (astynax)
типичный сценарий у них import Html exposing (Html) import Html.Events as Events
Danila Matveev
exposing это импорт всего?
Aleksei (astynax)
import list, как в Haskell
Aleksei (astynax)
import Html exposing (Html) == "импортируется модуль Html и становится доступен по этому имени, в скоуп втаскивается тип Html"
Aleksei (astynax)
если надо втащить всё - какой-нибудь eDSL с кучей функций, которые не конфликтуют с прелюдными - то делают import Some.EDSL exposing (..)
Danila Matveev
у меня не столь много виденых языков за плечами, но вроде б везде кроме хаскелля нет импорта всего по умолчанию
Aleksei (astynax)
#include foo.h :)
Aleksei (astynax)
В кложурке импортится всё умолчательно
Danila Matveev
я этот почти не видел =)
Aleksei (astynax)
Кароч таких языков не то чтобы много, но и не мало
Danila Matveev
лол что? во всех эмелях так
мне уже потыкали носом в примере, спасибо
кана
A64m
> 8.0.2
Vladislav
в 2018 использовать 8.0