@haskellru

Страница 378 из 1551
Alexandr
01.09.2017
07:04:32
А вот someFunc :: a -> a -> a гарантирует, что все параметры и возвращаемое значение будут одного типа

Andrew
01.09.2017
07:18:41
Спасибо

Alexander
01.09.2017
07:19:14
@vlastachu я ожидал другой уровень публики, так бы по другому готовил

но про сигнатуры - согласен

Google
Евгений
01.09.2017
07:22:04
А запись доклада есть?

Ilya
01.09.2017
07:23:21
Всем доброе утро. Что-то я запутался, подскажите пожалуйста, правильно ли я понимаю, что в следующем определении функции a b и c это разные типы должны быть? someFunc :: a -> b -> c
Это сигнатура полиморфной функции. Здесь a b c - не конкретные типы, а переменные типа. Такая функция обещает принять параметр какого угодно типа, потом другой параметр какого угодно типа (не связанного с первым), и вернуть значение третьего типа. Если подумаешь, то поймёшь, что настолько общих функций (с такой сигнатурой) в общем не так уж и много ;)

Например, функция с сигнатурой a -> a всего одна, это id, потому больше делать с каким-угодно-типом собственно и нечего, кроме как вернуть входное значение

Alexander
01.09.2017
08:01:23
@elemir90 маловероятно, с прошлых не было, во всяком случае доступных

Ilya
01.09.2017
08:33:48
если нужен State, то из какого пакета брать? mtl или transformers?

Oleg
01.09.2017
08:36:55
насколько мне известно, это один и тот же тип, а нужен ли тебе MTL - решай сам

т.е. mtl юзает типы из transformers

Ilya
01.09.2017
08:38:41
спасибо, значит возьму transformers

как-то можно попросить х-ль автоматически вывести инстанс Num для произведения двух типов? гугл молчит, там только GeneralizedNewtypeDeriving, но он для newtype

хочу так data Prod = Prod Int Int deriving Num

только вместе интов мои собственные типы, для которых уже есть Num

наверное можно было бы завернуть кортеж в newtype, но блин для кортежей Num тоже не определён

Serghei
01.09.2017
11:35:03
$ docker pull nginx Using default tag: latest Error response from daemon: error parsing HTTP 403 response body: invalid character '<' looking for beginning of value: "<html><body><h1>403 Forbidden</h1>\nSince Docker is a US company, we must comply with US export control regulations. In an effort to comply with these, we now block all IP addresses that are located in Cuba, Iran, North Korea, Republic of Crimea, Sudan, and Syria. If you are not in one of these cities, countries, or regions and are blocked, please reach out to https://support.docker.com\n</body></html>\n\n"

Google
Serghei
01.09.2017
11:35:48
к слову о любви к ms и экстремизме

Serghei
01.09.2017
12:01:52
Причем здесь я или крым. Это может быть контейнер к кубе например. Не?

Я вообще не из росии

Ilya
01.09.2017
12:06:34
Я вообще не из росии
Так ты из Крыма или нет? ?

Serghei
01.09.2017
12:06:52
Нет конечно

Andrew
01.09.2017
12:24:21
так

sojalei
01.09.2017
12:24:52
У вас же вимы и имаксы в основном, так?
кто-то учится и юзает нотпад++

Masson
01.09.2017
12:26:03
А профессионалы?

Yuriy
01.09.2017
12:28:57
хочу так data Prod = Prod Int Int deriving Num
я, например, не могу догадаться, какого поведения ты ожидаешь. почему компилятор должен догадываться?

Dmitry
01.09.2017
12:29:24
да

Alexander
01.09.2017
12:29:41
в основном - да

у всех - нет

Dmitry
01.09.2017
12:29:48
но я так и не освоил емакс (

Google
Yuriy
01.09.2017
12:30:03
я профессионал на Атоме

хотя да, в нашей команде 20% пользуются Атомом, 20% вскодом, 60% вимом

Ilya
01.09.2017
12:32:01
кроме Pair a b + Pair a' b' = Pair (a + a') (b + b') ещё что?

Yuriy
01.09.2017
12:32:37
комплексные числа мне на ум приходят в первую очередь

этот вариант тоже логичный

Ilya
01.09.2017
12:33:05
комплексные числа они для интов или флотов вместо этих a и b

а в случае произвольных типов, способ по-моему один

Alexander
01.09.2017
12:33:56
@cblp_su 5 человек?

Ilya
01.09.2017
12:33:57
кроме Pair a b + Pair a' b' = Pair (a + a') (b + b') ещё что?

Yuriy
01.09.2017
12:34:25
@Masteroid, Num не знает, с целыми числами ты работаешь или нет

Ilya
01.09.2017
12:34:30
вот именно

Alexander
01.09.2017
12:34:42
@Masteroid можно начать с fromInteger который есть в Num

я вижу варианты fromInteger x = Pair x x, Pair x 0, Pair 0 x

Pair sqrt(x) sqrt(x)

Ilya
01.09.2017
12:35:28
это ппц

Yuriy
01.09.2017
12:35:32
@Masteroid, я противоречия не вижу, но видимо, никому до тебя это просто не было нужно. запили патч в GHC

Ilya
01.09.2017
12:35:33
какие sqrt

Yuriy
01.09.2017
12:35:40
Google
Alexander
01.09.2017
12:36:11
@Masteroid да что угодно там может быть, с чего бы компилятору дерайвить это

Yuriy
01.09.2017
12:36:28
@cblp_su 5 человек?
если считать только хаскеллитов

Index
01.09.2017
12:36:46
Можно дерайвить произведение Num как Num произведения

Andrew
01.09.2017
12:37:05
что такое vscode?

Andrew
01.09.2017
12:37:13
visual studio ?

Index
01.09.2017
12:37:17
То есть data Pair = P Int Int получит fromInteger x = P (fromInteger x) (fromInteger x), и P a b + P x y = P (a + x) (b + y)

и это обобщается на N-арное произведение

и даже на (), hue hue

Yuriy
01.09.2017
12:37:40
что такое vscode?
http://lmgtfy.com/?q=vscode

Index
01.09.2017
12:38:54
lmgtfy это когда вместо общения с человеком ты предлагаешь общение с машиной. Может мне хочется, чтобы мне рассказали, а не ссылкой тыкнули

Или дали остроумную характеристику типа "это Atom от MS"

Ilya
01.09.2017
12:39:41
я не понимаю, почему вас удивляет, что Show, Read и прочую хрень можно тоже задерайвить сотней разных способов, но при этом компилятор выбирает один, самый естественный

а с Num удивляет

Index
01.09.2017
12:40:13
У Show и Read нет сотней разных способов

Vasiliy
01.09.2017
12:40:20
а для сумм как оно будет работать?

Index
01.09.2017
12:40:24
Там оно uniquely determined modulo whitespace

Andrei
01.09.2017
12:40:44
кроме Pair a b + Pair a' b' = Pair (a + a') (b + b') ещё что?
А что, других типов сложения не бывает? :D

Vasiliy
01.09.2017
12:40:46
ну вот потому и удивляет

Google
Alexander
01.09.2017
12:41:12
тем более что там не только сложнеие

Yuriy
01.09.2017
12:41:48
что такое vscode?
модульный текстовый редактор на браузерном движке, визуально похожий на Visual Studio, пригоден для работы только с одним проектом

Alexander
01.09.2017
12:41:54
и это когда думаешь об этом лучше убирать удобные идентификаторы

и думать как о

data KJHgfdsugdfg = KJHgfd Int Int

тогда всякие слова типа Pair не будут отвклекать мозг и делать вид будто ответ очевиден

Index
01.09.2017
12:42:58
Мне нравится как ты сделал KJHgfd префиксом KJHgfdsugdfg

Ilya
01.09.2017
12:43:25
data KJHgfdsugdfg = KJHgfd Int Int
я уже понял, что Int я зря написал

Alexander
01.09.2017
12:43:46
Int тут как раз добавляет сложностей

Ilya
01.09.2017
12:44:08
просто изначально я спрашивал про команду языка, чтобы можно было сразу вставить в ghci и проверить, что работает

Alexander
01.09.2017
12:44:11
было бы KJHgsdafsa a = KJHgs a a ситуация бы чуть-чуть менялась

Ilya
01.09.2017
12:44:11
а оказывается её вовсе нет

Alexander
01.09.2017
12:44:34
ну я не знаю что такое у тебя Pair

Yuriy
01.09.2017
12:44:35
по-моему, вполне естественное желание у товарища

зато компилятор умеет генерить всякий трэш λ> data A = A deriving (Enum, Show) λ> toEnum 1 :: A *** Exception: toEnum{A}: tag (1) is outside of enumeration's range (0,0)

Alexander
01.09.2017
12:46:16
ну у Enum, Show, Read однозначное и документированное поведение

с Num сложнее

есть всякие GeneralizedNewType и Generic

Yuriy
01.09.2017
12:46:39
Num точно так же документирован

Alexander
01.09.2017
12:46:50
как он дерайвится?

Страница 378 из 1551