Alexander
ag вроже ж на сишке
A64m
Vladislav
какая загадка?
A64m
впрочем, может это байка, надо соотвествующий пропозал для схемы раскопать
Alexander
ну раст стабильно медленнее сишки. с чего бы ему быстрее быть
A64m
какая загадка?
чей сумрачный гений их придумал (придумали схемачи)
Антон
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
он будет лучше если только не весьма сложной и высокоуровневой программе
A64m
Антон
Vladislav
A64m
не сделано просто
Антон
Anatolii
в кастомных прелюдах обычно делают гайд как на нее перейти, надо еще гайд как с нее свалить
Алексей
Это для дефолтной
Anatolii
Товарищи из serokell, а почему вы из Data.List забыли половину реекспортнуть?
Anatolii
ладно, не половину - почему groupBy забыли?
Антон
Anatolii
а groupBy?
Anatolii
а еще у меня вопрос, мне бы вот из пакета Data.Map хотелось бы insertWith - его как-то через Foldable можно выразить?
Anatolii
наверняка можно конечно, просто вопрос какой ценой
Евгений
Ivrything???
Евгений
REIR == Rewrite everyting in rust
Антон
Nope
Антон
Мем только RIIR = rewrite it in rust
Dmitrii
Dmitrii
Dmitrii
а groupBy?
groupBy неэффективный стандартный. Про это было issue: https://github.com/serokell/universum/issues/64
Dmitrii
Окей, ничего страшного) Пока никому их тех, кто использовал universum не понадобилось перейти обратно, поэтому никто такой гайд не запросил!
Anatolii
ну вот мне нужен groupBy сейчас
Anatolii
сделать я это не могу
кана
из 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
Антон
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)
Кароч таких языков не то чтобы много, но и не мало
кана
A64m
кана
A64m
> 8.0.2
Vladislav
в 2018 использовать 8.0