Size: a a a

Programming Offtop

2020 June 25

BP

Bogdan Panchenko in Programming Offtop
Alexander Nozik
Это реализуется в kmath путем создания независимой алгебры для чего угодно (хоть для строк). Это аналог твоего тайп-класса. Но тебе надо такую сложность?
Хм, Нада будет глянуть интересно про алгебру
источник

(

( in Programming Offtop
Alexander Nozik
Тогда там подходит Float, Double или BigDecimal. Из стандартного все. Зачем тут городить абстракцию?
С целочисленным делением тоже, плюс великое множество других типов, из которых можно сделать филд
источник

AN

Alexander Nozik in Programming Offtop
(
С целочисленным делением тоже, плюс великое множество других типов, из которых можно сделать филд
А зачем тебе он абстрактный?
источник

(

( in Programming Offtop
Alexander Nozik
Это реализуется в kmath путем создания независимой алгебры для чего угодно (хоть для строк). Это аналог твоего тайп-класса. Но тебе надо такую сложность?
Очевидно, что плохой аналог и мне это не надо, потому что котлин язык такой
источник

(

( in Programming Offtop
Alexander Nozik
А зачем тебе он абстрактный?
А зачем мне его привязывать к онли лонгам? Я что, в гошке?
источник

(

( in Programming Offtop
Сегодня лонги, а завтра мы захотим усилить проверки типов и для миллисекунд введем обертку
источник

AN

Alexander Nozik in Programming Offtop
(
А зачем мне его привязывать к онли лонгам? Я что, в гошке?
у тебя open world или closed world?
источник

AN

Alexander Nozik in Programming Offtop
Есть довольно стандартное заблуждение фп-фанатов, особенно хаскель-фанатов. Заключается в том, что вот все эти тайп-классы позволяют сделать что угодно за бесплатно. Но вы всегда забываете о том, что это все работает только в closed world. Не получается тайп-классы заставить работать консистентно в системах, где в любой момент могут что-то добавить. А в системе с закрытом миром, вы и так знаете типы сразу.
источник

(

( in Programming Offtop
Alexander Nozik
Есть довольно стандартное заблуждение фп-фанатов, особенно хаскель-фанатов. Заключается в том, что вот все эти тайп-классы позволяют сделать что угодно за бесплатно. Но вы всегда забываете о том, что это все работает только в closed world. Не получается тайп-классы заставить работать консистентно в системах, где в любой момент могут что-то добавить. А в системе с закрытом миром, вы и так знаете типы сразу.
Чего? Что значит "в любой момент что-то добавить"?
источник

AN

Alexander Nozik in Programming Offtop
(
Чего? Что значит "в любой момент что-то добавить"?
Про орфанов слышал?
источник

(

( in Programming Offtop
Alexander Nozik
Про орфанов слышал?
Да
источник

(

( in Programming Offtop
Это здесь ни причем
источник

AN

Alexander Nozik in Programming Offtop
Если есть задача построить либу, которая будет компилиться независимо от других либ - тут-то все и рассыпается. Добавления новых реализаций могут поломать код.
источник

AN

Alexander Nozik in Programming Offtop
(
Это здесь ни причем
на самом деле при чем. Но долго писать. Работать-таки надо. Дженерик числа нормально и без потери производительности нигде не сделали.
источник

AN

Alexander Nozik in Programming Offtop
В хаскеле  - да, но при closed world assumption.
источник

AN

Alexander Nozik in Programming Offtop
В с++ тоже да, но на шаблонах
источник

BP

Bogdan Panchenko in Programming Offtop
Alexander Nozik
на самом деле при чем. Но долго писать. Работать-таки надо. Дженерик числа нормально и без потери производительности нигде не сделали.
Да вроде в шарпе ?
источник

(

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

BP

Bogdan Panchenko in Programming Offtop
(
Орфаны здесь ни при чем, потому что есть скалка, в которой тайпклассы именованные и там этой проблемы нет
Но производительность на уровне смалтока или ниже 🌚
источник

AN

Alexander Nozik in Programming Offtop
Bogdan Panchenko
Да вроде в шарпе ?
Я сейчас не помню, но вроде смотрел - там те же грабли. Или не делаете реализацию абстракции и оставляете это пользоватю на усмотрение, или ставите умолчания, которые не всегда разумны. В kotlin это решается созданием своего модуля с экстеншенами который определяет умолчания для тех, кто его использует. см. kmath-for-real
источник