fink3L
спасибо, правка сообщения
Denis
Но помни, что наибольшее число активных хаскелистов на нашем чате в реддите.
Denis
в гиттере то есть
Denis
а здесь нельзя править сообщения?
Denis
плохо
Pavel 🕷
Алекс сделай норм линк для чата)
ㅤ
Pavel 🕷
годнота же)
ㅤ
всмысле? это супергруппа щас
Artur
@haskell_rus чёнить типа
Pavel 🕷
ага
Pavel 🕷
haskellchat занят?
Pavel 🕷
нихера
Artur
rus важно
Artur
а можно и рус и мировой )))
ㅤ
хм, а где это ставится? я в веб версии щас
Pavel 🕷
ну блин
Pavel 🕷
я в десктоп деве
Artur
а где дев скачать?
Artur
обновляемый?
Artur
мне оч не хватает групп для каналов :( когда уже будут
Pavel 🕷
там надо в Edit public link сделать
Pavel 🕷
@BAGArt https://desktop.telegram.org/
Pavel 🕷
крути до конца вниз
Artur
ёпт это не dev это просто версии
Artur
о!
Artur
не заметил )))))))))))))
Pavel 🕷
я тоже тупил)
Pavel 🕷
так что там с хаскелем то?))
Artur
я даже подумываю 2 акка телеги завести
Artur
1 спам 2 группы
Pavel 🕷
у меня уже 4 акка
Pavel 🕷
но это так неудобно
ㅤ
Dima
всем привет
Pavel 🕷
Нурлан
кто-нить знает, в data Mytype a = ... можно ли указать какому классу может принадлежать a ?
Evgeny
{-#LANGUAGE GADTs#-}
data Expr a where
I :: Num a => a -> Expr a
Evgeny
может как-нибудь так?
Нурлан
А что за функцияI?
Evgeny
просто неудачно выбранное название конструктора %)
Denis
Denis
в этом случае подсунуть 123 получится, а строку "123" - нет
Нурлан
компилятор говорит недопустимый контекст типа данных
Evgeny
это, вроде, устаревший метод
Evgeny
The designers of Haskell 98 do now think, that it was a bad decision to allow constraints on constructors. GHC as of version 7.2 disallows them by default (turn back on with -XDatatypeContexts).
Evgeny
data MyType a where
MyType :: Num a => a -> MyType a
Denis
Я проверил на ghc 7.10.2
Evgeny
это рекомендованный метод решения проблемы, как я понимаю
Evgeny
через GADT
Denis
да, через GADT лучше
Denis
я привёл первое, что на ум пришло... :-)
Нурлан
я что-то совсем не понимаю, о чем речь?
Denis
https://en.wikibooks.org/wiki/Haskell/GADT
Evgeny
https://wiki.haskell.org/Data_declaration_with_constraint
Нурлан
ок, сейчас разберусь
Нурлан
но может это из-за того, что я в конструкторе :& использую
Нурлан
без этого конструктора все работает
Vladislav
Vladislav
Это никакого профита не дает.
Vladislav
С GADT-ами решение нормальное, но нишевое.
Vladislav
Нужно понимать, что тогда словарик будет с каждым значением отдельно таскаться.
Vladislav
Получается ООП-но и часто некомпозабельно.
Нурлан
в смысле для каждого типа из класса?
Vladislav
Нет
Vladislav
Для того типа, которому принадлежит значение.
Vladislav
Ну т.е. если в терминах C++ говорить, то vtable прямо в значение встраивается.
Нурлан
прошу прощения, я с ООП ни разу и чем не пересекался
Нурлан
мне нравится haskell за то что в нем все абстрактно и практично и нету этого "кошка может мяу"
Vladislav
Ну такое решение тут как раз приводит к "кошка может мяу"
Vladislav
Вместо этого лучше все констрейнты накладывать там, где значение уже используется.
Vladislav
А при определении типов данных не предписывать, может оно мяу или нет
Vladislav
Посмотри например на стандартный тип Map k a
Vladislav
Чтобы там все работало, ключи должны быть инстансами Ord k
Vladislav
Но при объявлении типа это не упоминается.
Vladislav
Констрейнт добавлен только к функциям работы с Map, которые полагаются на наличие этого порядка.
Нурлан
а как объявление конструктор типа Map посмотреть?