
Denis
20.04.2018
13:47:35
а вот вроде новый типа https://hoogle.haskell.org/

Vasiliy
20.04.2018
13:48:13
хм, забавно, спасибо, первый раз вижу :)
похоже скоро hayoo будет не нужен, если я правильно все понял

A64m
20.04.2018
13:51:31
а новый это `https://www.stackage.org/lts-11.5/hoogle?q=` например

Denis
20.04.2018
13:53:08

Google

kana
20.04.2018
13:55:09
там не очень понятно какая версия хугла в нем используется

A64m
20.04.2018
14:06:18

Denis
20.04.2018
14:06:45
но есть пакеты, которых нет на стакедже

A64m
20.04.2018
14:11:18

Mikhail
20.04.2018
15:20:37
Посоветуйте, пожалуйста, что почитать/посмотреть для ознакомления с Free монадой?

Anton
20.04.2018
15:21:34
Роскомнадзор заблочил stackage.org ?
Такой подлянки я даже не ждал

Leonid
20.04.2018
15:24:10
Короче третий полный метр смешариков можно не смотреть. Так себе, как обычно.

Victor
20.04.2018
15:28:56

Anton
20.04.2018
15:29:15
жизнь через vpn

Quet
20.04.2018
15:30:23

Anton
20.04.2018
15:31:33
Может мы напишем террористам отдельный мессенджер, ркн его заблочит радостно и ркн отстанет от телеги?

Google

IC
20.04.2018
15:32:34
интересы террористов не учтены. вангую проблемы с успешностью этого решения.

Anton
20.04.2018
15:34:48
эх, а погружаться в предметную область чтот не хочется
придётся жить через впн

Victor
20.04.2018
15:35:35

Anton
20.04.2018
15:36:12
Свой подниму на малоизвестном vps провайдере
ну или эммигрирую к чертям

IC
20.04.2018
15:36:38
у чертей не банят телегу?

Quet
20.04.2018
15:36:56

Victor
20.04.2018
15:36:59
у чертей - нет

Anton
20.04.2018
15:37:00
Ходят слухи, у них ещё средняя зп выше

Ilya
20.04.2018
15:37:42

Anton
20.04.2018
15:38:15

Ilya
20.04.2018
15:38:30
я в рф, провайдер ДОМ.ру

Anton
20.04.2018
15:38:52
Во, записываем провайдеров, которые саботажники

Pineapple
20.04.2018
15:40:43
У меня провайдер тоже сботирует
https://www.seven-sky.net/

Ilya
20.04.2018
15:43:20
а какой IP у этого сайта? можно проверить по реестру
раньше я узнавал IP через ping или 2ip.ru, но что-то со stackage.org оба этих способа не работают
перестаю понимать современные интернеты :(

Pineapple
20.04.2018
15:44:31
$ host stackage.org 8.8.8.8
stackage.org has address 52.71.209.192
stackage.org has address 52.72.159.235

Google

Ilya
20.04.2018
15:44:50
а если перейти по ним, там просто
так что не всё так просто
но если ввести доменное имя, то попадаю именно на сайт, а не на Welcome to nginx

Pineapple
20.04.2018
15:45:57
❌ 52.71.209.192 заблокирован, идентификатор записи #884508
❌ 52.72.159.235 заблокирован, идентификатор записи #884508
Он, вероятно, на хост в HTTP запросе смотрит

A64m
20.04.2018
16:07:35
у меня сегодня стекедж доступен, но пару дней назад не был

Ignat
20.04.2018
20:41:29

Александр
20.04.2018
20:41:52
Чорд, спалился!
Да ладно, не сегодня же. Все уже в прошлом!

Ignat
20.04.2018
20:43:07
Да все плюсовики так говорят

Александр
20.04.2018
20:45:32
У меня нет зависимости! Захочу - брошу фри-монады.

Ignat
20.04.2018
20:46:43
А брат как себя чувствует?

Александр
20.04.2018
20:47:09
Жив, по последним данным

Anton
20.04.2018
21:43:35
Забавно, VSCode тоже нельзя скачать без VPN

Dmitry
20.04.2018
21:47:54
Лишь бы только VPN можно было скачивать

Kit
21.04.2018
04:21:58
Кто сталкивался с Constraint?
Expected a type, but ‘Zp a’ has kind ‘Constraint’

Google

Kit
21.04.2018
04:22:25
не могу понять как это обойти
class Zp a where
genP :: a
genQ :: a -- генератор мультипликативной секьюрной подругрппы
pBase :: a
qBase :: a
toZp :: Integer -> a
fromZp :: a -> Integer
instance Num (Zp a) where
fromInteger = toZp :: a -> Zp a
(+) a b = fromInteger $ (fromZp a) + (fromZp b)
(*) a b = fromInteger $ (fromZp a) * (fromZp b)
(-) a b = fromInteger $ (fromZp a) - (fromZp b)
negate = (-) pBase

Aleksey
21.04.2018
04:34:50
Ошибка говорит, что вы пытаетесь инстанциировать класс Num для класса, а это делается для типов
Думаю, вы хотите instance Zp a => Num a where

Kit
21.04.2018
04:36:22
сделал так, возникло много прагм (кажется они так называются) и ghci говорит что код неправильный

Aleksey
21.04.2018
04:37:20
Требование расширений, это нормально.

Kit
21.04.2018
04:38:26
ну хотя бы я внутрь объявленя класса зашел в компиляции :)

Admin
ERROR: S client not available

Aleksey
21.04.2018
04:41:02
ещё неправильно написана сигнатура a -> Zp a
Zp - это класс, а не тип. Поэтому он ожидается в позиции констреинта
T.е. правильная сигнатура будет выглядеть так
fromInteger :: Zp a => Integer -> a

Kit
21.04.2018
04:44:53
но пока сложности еще есть

Aleksey
21.04.2018
04:45:05
Но дальше будет больше проблем.

Kit
21.04.2018
04:45:14
а в классы вообще нельзя передавать классы?

Aleksey
21.04.2018
04:45:36
Только в роли констреинта
И это не "передавать"

Kit
21.04.2018
04:46:30
cмысл понял

Aleksey
21.04.2018
04:46:58
Констреинты, это просто подсказки для компилятора, позволяющие отсечь overlapping instances
В данном сулчае мы имеем проблему - констреинт Zp a => никак не "уменьшает" область поиска инстансов. И для компилятора нет разницы между нстансами
instance Zp Int => Num Int where
и
instance Num Int where

Google

Aleksey
21.04.2018
04:50:20
Т.о. компилятор не может выбрать, какой "плюс" использовать:
(+) :: (Zp a, Num a) => a -> a -> a или (+) :: Num a => a -> a -> a

Kit
21.04.2018
04:50:21
а как это обходится?

Aleksey
21.04.2018
04:50:42
Заворачиванием в newtype

Kit
21.04.2018
04:50:48
может сигнатуру прописать к функции (+) ?

Aleksey
21.04.2018
04:52:29
Нужно завести тонкую обёртку
class Zp a where
...
newtype Zpable a = Zpable a
instance Zp (Zpable Int) where
...
instance Num (Zpable a) where
...
Тут чётко отделены типы, которые умеют Zp от всех остальных, которые умеют Num сами по себе

Kit
21.04.2018
04:54:36
как громоздко однако
сейчас буду пробовать
спасибо

Aleksey
21.04.2018
04:56:45
Добавился по сути один newtype и немного изменились сами инстансы. Не сильно более громоздко стало

Kit
21.04.2018
04:56:55
я предполагал создать еще структуру данных с именем FiniteField это видимо то что нужно запихивать в newtype
я думал так: создам классы, которые буду нанизывать один на другой, а в самом основании будет тип данных
нанизывать видимо нельзя, можно "ограничивать"

Aleksey
21.04.2018
04:58:19
Тут проблема не в самом подходе

Kit
21.04.2018
04:58:40
и тип данных надо как-то еще крутить на всех уровнях

Aleksey
21.04.2018
04:58:52
Просто нельзя навешивать класс (констреинт) на уже существующую связку (инстанс) тип - класс

Kit
21.04.2018
04:59:59
а если я запилю свои собственные классны с инстансами с блекджеком и дамами?
без существующих инстансов
не пересекаясь