Size: a a a

2020 October 02

AT

Alexander Tchitchigi... in fprog_spb
Yuuri
Ну ИМХО, всегда явно передавать в полиморфную функцию модуль, который однозначно определяется из типа «настоящего» аргумента – это как всегда явно указывать у значения тип, когда он легко может быть выведен
Допустим. Но по мне это всё равно очень слабый аргумент за классы типов. Учитывая плохую интеграцию с первоклассными модулями, и то, что это существенно более редкий случай, чем типы.
источник

Y

Yuuri in fprog_spb
Классы типов – редкий случай?!
источник

FN

Freyr Njordrson in fprog_spb
Yuuri
typeclass/trait-методы, наверное, можно считать частным случаем перегрузки, с ограничениями на тип перегружаемой функции
тайпклассы же динамическая диспетчеризация вроде
источник

AT

Alexander Tchitchigi... in fprog_spb
Кроме того, конкретно проблему явной передачи словаря можно и другими средствами решать.
источник

Y

Yuuri in fprog_spb
Freyr Njordrson
тайпклассы же динамическая диспетчеризация вроде
Статическая при возможности, как и в Rust. Динамическая начинает использоваться в экзистенциальных типах в Haskell / трейт-объектах в Rust
источник

Y

Yuuri in fprog_spb
Alexander Tchitchigin
Кроме того, конкретно проблему явной передачи словаря можно и другими средствами решать.
Ну был пропозал для implicits, были ppx_-расширения, где оно всё сейчас...
источник

AT

Alexander Tchitchigi... in fprog_spb
Yuuri
Классы типов – редкий случай?!
Да, я определённо существенно реже пишу классы типов и ограничения, чем просто типы (которые не пишу, потому что выводятся, но пришлось бы писать по Вашей аналогии). Кроме того, в Haskell классы типов используются и "вместо" модулей, потому что модулей-то нет, так что картина прилично biased в эту сторону.
источник

FN

Freyr Njordrson in fprog_spb
Yuuri
В хаскиле show 1, show 3.14159 и show True задиспатчится при компиляции
не всегда, в общем случае нет

девиртуализация и в жабе есть, но это все равно динамическая диспетчеризация
источник

AT

Alexander Tchitchigi... in fprog_spb
Yuuri
Статическая при возможности, как и в Rust. Динамическая начинает использоваться в экзистенциальных типах в Haskell / трейт-объектах в Rust
Не только. Между модулями/библиотеками тайпклассы не инлайнятся.
источник

AT

Alexander Tchitchigi... in fprog_spb
Freyr Njordrson
не всегда, в общем случае нет

девиртуализация и в жабе есть, но это все равно динамическая диспетчеризация
Эти — 100% да.
источник

Y

Yuuri in fprog_spb
Alexander Tchitchigin
Да, я определённо существенно реже пишу классы типов и ограничения, чем просто типы (которые не пишу, потому что выводятся, но пришлось бы писать по Вашей аналогии). Кроме того, в Haskell классы типов используются и "вместо" модулей, потому что модулей-то нет, так что картина прилично biased в эту сторону.
Ну новые и я редко пишу, но готовые библиотечные используются повсюду
источник

FN

Freyr Njordrson in fprog_spb
Alexander Tchitchigin
Эти — 100% да.
понятно что конкретно show ещё и применённый к константе с известным типом он оптимизирует, но в общем случае это не всегда возможно
источник

AT

Alexander Tchitchigi... in fprog_spb
Freyr Njordrson
понятно что конкретно show ещё и применённый к константе с известным типом он оптимизирует, но в общем случае это не всегда возможно
Да, и я даже написал в каком, например. 😉
источник

AT

Alexander Tchitchigi... in fprog_spb
Yuuri
Ну новые и я редко пишу, но готовые библиотечные используются повсюду
Как я указывал, они используются в том числе и "вместо" модулей, поскольку модулей нет. 😉
Ну и у меня не все функции вообще используют классы типов — часто встречаются и полностью конкретные.
источник

AT

Alexander Tchitchigi... in fprog_spb
Опять же, очень часто классы типов в Haskell используются для демаркации/параметризации относительно эффектов — в OCaml это либо не нужно, либо можно сделать по-другому (см. Multicore OCaml и Algebraic Effect Hadlers).
источник

AT

Alexander Tchitchigi... in fprog_spb
Это я объясняю, почему считаю, что добавление классов типов в OCaml — не очень хорошая идея, скорее всего.
источник

L

Liscript-bot in fprog_spb
Yuu-chan: идет вычисление...
источник

L

Liscript-bot in fprog_spb
Yuu-chan: ошибка преобразования в число: String: что
источник

L

Liscript-bot in fprog_spb
Igor: ошибка преобразования в число: String: ad-hoc
источник

L

Liscript-bot in fprog_spb
Yuu-chan: идет вычисление...
источник