Size: a a a

Programming Offtop

2021 February 03

AM

Andrew Mikhaylov in Programming Offtop
Alexander Nozik
Операции везде работают по разному и выделять их в интерфейсы - так себе идея. Решать это можно тайп-классами, но у них есть проблема с тем, что к одному типу операции прибиты гвоздями и будут беды, когда не совсем  однозначное прочтение операторов. В Kmath это решается разделением операций и значений, то есть добавляются экстеншены в зависимости от того, где используются элементы. На самом деле хаскель тут не спасает, потому что байндинги для тайп-классов все равно надо писать.
А, ну так в свифте с этим дела попроще.
источник

AN

Alexander Nozik in Programming Offtop
(
ах да, я забыл, что в жаве/котлине НЕТ ТАЙПКЛАССОВ
Тайпкласс тут не поможет. Потому что операция неоднозначная. В Kmath как раз эмулируются тайп-классы, но с явныой передачей контекста. Это решает проблему неоднозначности
источник

(

( in Programming Offtop
Alexander Nozik
Операции везде работают по разному и выделять их в интерфейсы - так себе идея. Решать это можно тайп-классами, но у них есть проблема с тем, что к одному типу операции прибиты гвоздями и будут беды, когда не совсем  однозначное прочтение операторов. В Kmath это решается разделением операций и значений, то есть добавляются экстеншены в зависимости от того, где используются элементы. На самом деле хаскель тут не спасает, потому что байндинги для тайп-классов все равно надо писать.
так я не против написать тайпкласс для своего нового типа чиселок
источник

I

Igor in Programming Offtop
Alexander Nozik
Тайпкласс тут не поможет. Потому что операция неоднозначная. В Kmath как раз эмулируются тайп-классы, но с явныой передачей контекста. Это решает проблему неоднозначности
> Потому что операция неоднозначная
Какая операция неоднозначна?
источник

AN

Alexander Nozik in Programming Offtop
Andrew Mikhaylov
А, ну так в свифте с этим дела попроще.
В смысле? Проблем собственно в том, что Int + Double  не равно Double + Int если операция диспатчится по первому аргументу
источник

AN

Alexander Nozik in Programming Offtop
Igor
> Потому что операция неоднозначная
Какая операция неоднозначна?
☝️
источник

(

( in Programming Offtop
я просто хочу, что если я написал instance Multipliable MuNumberType where, то у меня автоматически для моего типа будет доступен и pow
источник

AN

Alexander Nozik in Programming Offtop
(
так я не против написать тайпкласс для своего нового типа чиселок
А в чем тогда проблема? Пишите экстеншен на нумбер и все
источник

AM

Andrew Mikhaylov in Programming Offtop
Alexander Nozik
Там вопрос не в этом, а в том, что такое Int + Double
(94, 19) Binary operator ‘+’ cannot be applied to operands of type ‘Int’ and ‘Double’
источник

(

( in Programming Offtop
Alexander Nozik
В смысле? Проблем собственно в том, что Int + Double  не равно Double + Int если операция диспатчится по первому аргументу
а с чего бы был Int + Double?
источник

I

Igor in Programming Offtop
Alexander Nozik
В смысле? Проблем собственно в том, что Int + Double  не равно Double + Int если операция диспатчится по первому аргументу
Implicit конверции вообще зло
В нормальных язык сильная типиция в этом плане
источник

AN

Alexander Nozik in Programming Offtop
Andrew Mikhaylov
(94, 19) Binary operator ‘+’ cannot be applied to operands of type ‘Int’ and ‘Double’
Это в свифте? Ну тогда они точно так же не решают эту проблему и правильно делают
источник

(

( in Programming Offtop
Ну типа, если у меня
interface Plusable<A> {
 fun plus(a: A, b: A): A
}

и есть инстанс для инта и дабла, я с одной этой фигней их сложить не смогу
источник

AN

Alexander Nozik in Programming Offtop
(
а с чего бы был Int + Double?
потому что коммутативность - это контракт +
источник

AN

Alexander Nozik in Programming Offtop
(
Ну типа, если у меня
interface Plusable<A> {
 fun plus(a: A, b: A): A
}

и есть инстанс для инта и дабла, я с одной этой фигней их сложить не смогу
Почему это, можете, просто у вас там будет Number
источник

(

( in Programming Offtop
а, ну это да
источник

(

( in Programming Offtop
злое легаси
источник

(

( in Programming Offtop
но тогда это правда только для жвм
источник

(

( in Programming Offtop
а нет, у Number-а не определен +
источник

AN

Alexander Nozik in Programming Offtop
Нумбер в жаве сделан кривовато, но его и нельзя сделать хорошо на самом деле. Лучшее, что я могу придумать - это силед класс с дополнительным вариантом custom.
источник