Size: a a a

2020 November 09

AV

Alexander Vershilov in Haskell
Они оба-два через coercion работают
источник

A

Andrey in Haskell
угу
источник

к

кана in Haskell
Ilya Kos
Потому что имхо ньютайп вполне можно рассматривать как оптимизацию ограниченного случая data.
профита от такой оптимизации минимум, а проблем куча, и непонятные ограничения на конструктор, и поведение при матчинге не такое, и коерс какой-то магический непонятно откуда взявшийся, которого опасаются, наверное какой-то хак, а не естественная функция для этой фичи
источник

АХ

Алексей Худяков... in Haskell
A64m AL256m qn I0
думаю, что из стадии "у кого-то не работает" хаскельный тулинг не выйдет никогда, так что не знаю, насколько тут применимо "рано"
поздно, с другой стороны, вполне может быть, большинство хаскельных ленгвидж-костылей достигали какого-то пика, ну или может плато, а потом забрасывались и сгнивали
«Я не доживу» — сказал Бог и заплакал
источник

к

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

AA

A64m AL256m qn<co... in Haskell
Maxim Koltsov
обидно
ну может если недокомпилировать с дешугарингом, то это не сильно замедлит, если в гхц апи вообще можно вклинится на этом этапе
одно время гхц с -но-код не показывал дешугаринг-тайм ворнинги, т.е. какой-нибудь ghcid в быстром режиме их не показывал, но это исправляли (в гхц)
источник

к

кана in Haskell
как минимум конструктор ньютайпов можно было как-то отделить от конструкторов дат, чтобы fmap Newtype list не писали
источник

к

кана in Haskell
потому что это и не конструктор вовсе, а подгонка синтаксиса к датам
источник

AA

A64m AL256m qn<co... in Haskell
кана
нет, я уверен что синтаксис ньютаыпов как у дат с конструктором это большая ошибка, которая принесла оч много путанницы в головы новичков, но альтернативного решения без боли с аннотациями в каждом месте не нашел
разве опак аскрипшон в емеле это не альтернатива?
источник

к

кана in Haskell
A64m AL256m qn I0
разве опак аскрипшон в емеле это не альтернатива?
ну я не видел как в мл
источник

к

кана in Haskell
я видел как в флоу
источник

к

кана in Haskell
и в хаскеле пришлось бы делать много аннотаций
источник

к

кана in Haskell
ща
источник

к

кана in Haskell
Переслано от кана
какой-нибудь

nominal type Value = Int

и чтобы в пределах модуля Value и Int коерсились неявно, пушто это просто алиас, а в других модулях уже нет

такой синтаксис правда еще больше увеличил бы число тайп-аннотаций, да и id-функций пришлось бы больше писать и экспортировать, так что уж лучше такой как есть.

Хотя с другой стороны кода от аннотации не сильно больше, но это пока параметров нет
f :: Value -> a
g :: Int -> a
g x = f (x :: Value)
и
g x = f (Value x)
а когда нужно будет полиморфную функцию вызывать, придется все аннотировать явно в каждом месте для обоих типов

но никаких конструкторов нет при этом, а единственность значения тут чисто из-за того, что алиас не может быть на большее число типов чем 1
источник

к

кана in Haskell
а тут ничего не написано про аннотации
источник

к

кана in Haskell
но когда вызываешь show, пришлось бы уже указывать какой шоу
источник

AA

A64m AL256m qn<co... in Haskell
Ilya Kos
При первом приближении newtype семантически не отличается от такого же объявления data
так в том и дело что отличается, весь смысл ньютайпов как фичи сначала был в этом отличии это потом уже ГНД/коэрс/виа добавились
источник

AV

Alexander Vershilov in Haskell
в ленивости?
источник

AA

A64m AL256m qn<co... in Haskell
ну да
источник

AA

A64m AL256m qn<co... in Haskell
причем в такой разнице в ленивости, которую не давали строгие поля.
источник