Size: a a a

2016 March 18

Н

Нурлан in Haskell
без этого конструктора все работает
источник

VZ

Vladislav Zavialov in Haskell
Denis Shevchenko
data Num a => My a = My a deriving (Show)
Так делать вообще не нужно, никогда
источник

VZ

Vladislav Zavialov in Haskell
Это никакого профита не дает.
источник

VZ

Vladislav Zavialov in Haskell
С GADT-ами решение нормальное, но нишевое.
источник

VZ

Vladislav Zavialov in Haskell
Нужно понимать, что тогда словарик будет с каждым значением отдельно таскаться.
источник

VZ

Vladislav Zavialov in Haskell
Получается ООП-но и часто некомпозабельно.
источник

Н

Нурлан in Haskell
в смысле для каждого типа из класса?
источник

VZ

Vladislav Zavialov in Haskell
Нет
источник

VZ

Vladislav Zavialov in Haskell
Для того типа, которому принадлежит значение.
источник

VZ

Vladislav Zavialov in Haskell
Ну т.е. если в терминах C++ говорить, то vtable прямо в значение встраивается.
источник

Н

Нурлан in Haskell
прошу прощения, я с ООП ни разу и чем не пересекался
источник

Н

Нурлан in Haskell
мне нравится haskell за то что в нем все абстрактно и практично и нету этого "кошка может мяу"
источник

VZ

Vladislav Zavialov in Haskell
Ну такое решение тут как раз приводит к "кошка может мяу"
источник

VZ

Vladislav Zavialov in Haskell
Вместо этого лучше все констрейнты накладывать там, где значение уже используется.
источник

VZ

Vladislav Zavialov in Haskell
А при определении типов данных не предписывать, может оно мяу или нет
источник

VZ

Vladislav Zavialov in Haskell
Посмотри например на стандартный тип Map k a
источник

VZ

Vladislav Zavialov in Haskell
Чтобы там все работало, ключи должны быть инстансами Ord k
источник

VZ

Vladislav Zavialov in Haskell
Но при объявлении типа это не упоминается.
источник

VZ

Vladislav Zavialov in Haskell
Констрейнт добавлен только к функциям работы с Map, которые полагаются на наличие этого порядка.
источник

Н

Нурлан in Haskell
а как объявление конструктор типа Map посмотреть?
источник