Alexander
у всех - нет
Dmitry
но я так и не освоил емакс (
Cheese
я профессионал на Атоме
Cheese
хотя да, в нашей команде 20% пользуются Атомом, 20% вскодом, 60% вимом
Ilya
Ilya
кроме Pair a b + Pair a' b' = Pair (a + a') (b + b') ещё что?
Cheese
комплексные числа мне на ум приходят в первую очередь
Cheese
этот вариант тоже логичный
Ilya
Ilya
комплексные числа они для интов или флотов вместо этих a и b
Ilya
а в случае произвольных типов, способ по-моему один
Alexander
@cblp_su 5 человек?
Ilya
кроме Pair a b + Pair a' b' = Pair (a + a') (b + b') ещё что?
Cheese
@Masteroid, Num не знает, с целыми числами ты работаешь или нет
Ilya
вот именно
Alexander
@Masteroid можно начать с fromInteger который есть в Num
Alexander
я вижу варианты fromInteger x = Pair x x, Pair x 0, Pair 0 x
Alexander
Pair sqrt(x) sqrt(x)
Ilya
это ппц
Cheese
@Masteroid, я противоречия не вижу, но видимо, никому до тебя это просто не было нужно. запили патч в GHC
Ilya
какие sqrt
Cheese
Alexander
@Masteroid да что угодно там может быть, с чего бы компилятору дерайвить это
Vladislav
Можно дерайвить произведение Num как Num произведения
Andrew
что такое vscode?
Cheese
Andrew
visual studio ?
Vladislav
То есть data Pair = P Int Int получит fromInteger x = P (fromInteger x) (fromInteger x), и P a b + P x y = P (a + x) (b + y)
Vladislav
и это обобщается на N-арное произведение
Vladislav
и даже на (), hue hue
Vladislav
lmgtfy это когда вместо общения с человеком ты предлагаешь общение с машиной. Может мне хочется, чтобы мне рассказали, а не ссылкой тыкнули
Vladislav
Или дали остроумную характеристику типа "это Atom от MS"
Ilya
я не понимаю, почему вас удивляет, что Show, Read и прочую хрень можно тоже задерайвить сотней разных способов, но при этом компилятор выбирает один, самый естественный
Ilya
а с Num удивляет
Vladislav
У Show и Read нет сотней разных способов
Vasiliy
а для сумм как оно будет работать?
Vladislav
Там оно uniquely determined modulo whitespace
Vladislav
Andrei
Vasiliy
ну вот потому и удивляет
Alexander
тем более что там не только сложнеие
Cheese
что такое vscode?
модульный текстовый редактор на браузерном движке, визуально похожий на Visual Studio, пригоден для работы только с одним проектом
Alexander
и это когда думаешь об этом лучше убирать удобные идентификаторы
Alexander
и думать как о
Alexander
data KJHgfdsugdfg = KJHgfd Int Int
Alexander
тогда всякие слова типа Pair не будут отвклекать мозг и делать вид будто ответ очевиден
Vladislav
Мне нравится как ты сделал KJHgfd префиксом KJHgfdsugdfg
Alexander
Int тут как раз добавляет сложностей
Ilya
просто изначально я спрашивал про команду языка, чтобы можно было сразу вставить в ghci и проверить, что работает
Alexander
было бы KJHgsdafsa a = KJHgs a a ситуация бы чуть-чуть менялась
Ilya
а оказывается её вовсе нет
Ilya
Alexander
ну я не знаю что такое у тебя Pair
Cheese
по-моему, вполне естественное желание у товарища
Cheese
зато компилятор умеет генерить всякий трэш
λ> data A = A deriving (Enum, Show)
λ> toEnum 1 :: A
*** Exception: toEnum{A}: tag (1) is outside of enumeration's range (0,0)
Alexander
ну у Enum, Show, Read однозначное и документированное поведение
Alexander
с Num сложнее
Alexander
есть всякие GeneralizedNewType и Generic
Cheese
Num точно так же документирован
Alexander
как он дерайвится?
Alexander
где почитать?
Ilya
короче
Ilya
я утверждаю
Cheese
Alexander
Num
Cheese
Num никак не дерайвится
Ilya
что это единственный возможный способ задерайвить Num для произведения двух полиморфных типов
Ilya
data Pair a b = Pair a b deriving Show
instance (Num a, Num b) => Num (Pair a b) where
Pair a b + Pair a' b' = Pair (a + a') (b + b')
Pair a b - Pair a' b' = Pair (a - a') (b - b')
Pair a b * Pair a' b' = Pair (a * a') (b * b')
negate (Pair a b) = Pair (negate a) (negate b)
abs (Pair a b) = Pair (abs a) (abs b)
fromInteger x = Pair (fromInteger x) (fromInteger x)
signum (Pair a b) = Pair (signum a) (signum b)
Ilya
ессли я не прав, то ткните
Alexander
а. он не тайпчекается
Alexander
б. нет, возможно поведение как у комплексных чисел
Vasiliy
deriving должен не только для произведений работать
Alexander
а стоп, я наркоман
Ilya
что не тайпчекается?
Alexander
тайпчекается
Alexander
но поведение как у комплексных чисел может хотеться