Size: a a a

Elm Lang сообщество разработчиков

2017 October 26

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
Нет. В ADT можно положить a -> b и тогда тип молча перестанет поддерживать проверку на равенство. И перестанет подходить на роль ключа.
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
Но это можно отрабатывать компилятором
источник

AK

Anton Kotenko in Elm Lang сообщество разработчиков
c Set пример кстати более лучший чем с Dict
источник

AK

Anton Kotenko in Elm Lang сообщество разработчиков
скажите лучше как технически это делается в расте и прочих?
источник

AK

Anton Kotenko in Elm Lang сообщество разработчиков
именно union/sum-types и сравнение между опциями
источник

NK

ID:351615646 in Elm Lang сообщество разработчиков
Anton Kotenko
ну присвой свой Int-код каждой такой ошибке, вот и будет тот же hashset вручную
ты же понимаешь , что так теряются все плюсы типизации , и вообще что делать если у варианта есть ассоциируемый тип?
источник

NK

ID:351615646 in Elm Lang сообщество разработчиков
делаешь сет с кодом 1337, и лишний failure point
источник

AK

Anton Kotenko in Elm Lang сообщество разработчиков
ID:351615646
ты же понимаешь , что так теряются все плюсы типизации , и вообще что делать если у варианта есть ассоциируемый тип?
с этим соглашусь может быть, прийдя из JS с ограничениями я ещё не мыслю такими абстрактными структурами
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
В Rust есть трейт Eq. Реализуя его для своего типа ты можешь указать, как два значения этого типа можно сравнить.
После этого Set научится работать с новым типов в роли элемента, т.к. просто сравнивает входящий элемент со всеми уже добавленными.
источник

NK

ID:351615646 in Elm Lang сообщество разработчиков
Anton Kotenko
скажите лучше как технически это делается в расте и прочих?
It is required that the keys implement the Eq and Hash traits, 
источник

AK

Anton Kotenko in Elm Lang сообщество разработчиков
вот, то есть вопрос в том, что определяя тип ты должен указать как его сравнивать с другими значениями того же типа
источник

NK

ID:351615646 in Elm Lang сообщество разработчиков
неа
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
Это можешь сделать не ты. Это может сделать и тот, кому это когда либо понадобится
источник

NK

ID:351615646 in Elm Lang сообщество разработчиков
компилятор может за тебя сделать код сравнения
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
В Elm все типы сразу умеют проверку на равенство. Т.е. компилятор уде поработал.
источник

AK

Anton Kotenko in Elm Lang сообщество разработчиков
ну для простых типов да, но для сложных (типа юнионов, потому что хер знает что там у тебя вместе с ним лежит), тебе придётся делать это вручную
источник

NK

ID:351615646 in Elm Lang сообщество разработчиков
источник

NK

ID:351615646 in Elm Lang сообщество разработчиков
Anton Kotenko
ну для простых типов да, но для сложных (типа юнионов, потому что хер знает что там у тебя вместе с ним лежит), тебе придётся делать это вручную
нет, лол
источник

NK

ID:351615646 in Elm Lang сообщество разработчиков
что за подразумевания
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
> хер знает что там у тебя вместе с ним лежит

компилятор знает
источник