
Александр
05.02.2018
16:38:51

ParkeT
05.02.2018
16:39:45

Александр
05.02.2018
16:40:01
А никто не говорил, что я не буду здесь занудствовать в чатике.

Google

A64m
05.02.2018
16:40:30
я вообще не понимаю что такое "монадический" "тип"

kana
05.02.2018
16:40:34

ParkeT
05.02.2018
16:40:53

Александр
05.02.2018
16:40:56

ParkeT
05.02.2018
16:42:12

Александр
05.02.2018
16:42:48
по одному из определений
По какому определению? Да, каждая монада - это функтор. А наоборот тоже что ли верно? Моя интуиция из практики говорит, что как будто бы нет. Хотя для Free-монады, действительно, требование только функтора есть

A64m
05.02.2018
16:43:28

Alexander
05.02.2018
16:44:06
монадический тип - тип имеющий инстанс Monad ваш К.О.
это не О. конечно, но вроде так
просторечие

Александр
05.02.2018
16:45:55

A64m
05.02.2018
16:46:42
return это часть способа композить стрелки

Alexander
05.02.2018
16:46:45
в определении тройки есть, функтор, join и return

Google

Александр
05.02.2018
16:47:27

A64m
05.02.2018
16:48:00
конструктор типа, рыбка и ретурн (со свойствами ассоциативности и правой-левой идентичности)

kana
05.02.2018
16:48:02
по "определению" (не знаю, насколько оно официальное, но мне оно очень понравилось, когда я его понял) монады как моноида на категории эндофункторов
Что есть моноид? Моноид это тройка из множества M, операции *: M * M -> M (ассоциативной), нейтрального элемента e: 1 -> M
Категория эндофункторов - категория, где объекты - функторы C -> C, где C - некая категория
получается, моноид на категории эндофункторов - тройка из эндофунктора M (в хаскеле это просто функтор, потому что там все функторы - эндофункторы), естественного преобразования M * M ~> M (если выйти из категории эндофункторов, то это join : M (M a) -> M a, и нейтарльного элемента 1 ~> M, в нашей категории это return : a -> M a (1 это Identity-функтор, Identity a = a, поэтому я его опустил тут)
~> - естественное преобразование, морфизм в категории функторов,
f ~> g = forall a. f a -> g a


Александр
05.02.2018
16:48:47
Кстати, разные авторы пишут, что, мол, не делайте таких "псевдомонад", потому что у вас будут проблемы. Но, кажется, это все общие слова, и еще никто не исследовал, какие именно проблемы могут возникнуть. Даже интересно.

A64m
05.02.2018
16:49:41
такие же как у плавучки
они там тоже из-за того что ассоциативность не соблюдается


Александр
05.02.2018
16:50:01
Плавучки?
по "определению" (не знаю, насколько оно официальное, но мне оно очень понравилось, когда я его понял) монады как моноида на категории эндофункторов
Что есть моноид? Моноид это тройка из множества M, операции *: M * M -> M (ассоциативной), нейтрального элемента e: 1 -> M
Категория эндофункторов - категория, где объекты - функторы C -> C, где C - некая категория
получается, моноид на категории эндофункторов - тройка из эндофунктора M (в хаскеле это просто функтор, потому что там все функторы - эндофункторы), естественного преобразования M * M ~> M (если выйти из категории эндофункторов, то это join : M (M a) -> M a, и нейтарльного элемента 1 ~> M, в нашей категории это return : a -> M a (1 это Identity-функтор, Identity a = a, поэтому я его опустил тут)
~> - естественное преобразование, морфизм в категории функторов,
f ~> g = forall a. f a -> g a
Спасибо

A64m
05.02.2018
16:50:22
чисел с плавающей точкой

Александр
05.02.2018
16:50:38
А, окей

Антон
05.02.2018
17:25:46

Imants
05.02.2018
18:22:19
монады в картинках:
https://m.habrahabr.ru/post/183150/

Andrew
05.02.2018
18:22:36
?

? animufag ?
05.02.2018
18:24:37
а можно как-нибудь квикчеку (с hspec) сказать что мол погоняй ка разные рандомы через функцию и мне всё равно какой выхлоп лишь бы не падало?
это наверное идеологически не ок

Aleksey
05.02.2018
18:40:24
у вас явно не хватает хаскеля

Евгений
05.02.2018
19:08:14

? animufag ?
05.02.2018
19:18:20
оо кул. живёт идея лейбница

Александр
05.02.2018
19:20:39
Вот уже года три я рассказываю плюсовикам Хаскель, обернутый в плюсы. Меня очень радует, что концепции, существующие в мире ФП уже десяток лет (а то и два), вызывают такое неподдельное удивление.

Yuriy
05.02.2018
20:02:14

Google

? animufag ?
05.02.2018
20:03:11
без эксепшенов, ну там исполнялась за конечное время

Yuriy
05.02.2018
20:05:12
λ> quickCheck $ \x y -> x `div` y `seq` ()
*** Failed! Exception: 'divide by zero' (after 1 test):
0
0
λ> quickCheck $ \x y -> x / y `seq` ()
+++ OK, passed 100 tests.
время жизни твоего компьютера практически конечно. всё, что на нём работает, работает конечное время
можно таймаут какой-нибудь придумать

? animufag ?
05.02.2018
20:07:14
мм ну ок.
а тем не менее не кажется, что это как-то неправильно?
просто такая фигня: есть падающая функция. и есть функция которая нормализует входные данные чтобы тип не падало 100%
не, таймаут лишнее.

Yuriy
05.02.2018
20:08:37
звучит туманно

Dmitry
05.02.2018
20:08:51
Что бы как-то упорядочить наши вакансии, буду постить их сюда: https://t.me/hxr_haskell_job и туда же новости (например, про митапы, где можно будет лично пообщаться при желании )

Kirill
06.02.2018
07:22:52
@qnikst оффтоп?

Hot
06.02.2018
07:25:05
Или спам?

Mikhail
06.02.2018
07:28:06
>канал о том как стать программистом даже если вы до этого не написали ни одной строчки кода
Весьма странно рекламировать такой посыл на канале о Haskell

Yuriy
06.02.2018
07:29:02
спам, очевидно

Yuriy
06.02.2018
07:31:07

? animufag ?
06.02.2018
07:31:30
ахах

Yuriy
06.02.2018
07:32:16
точнее, что ты ожидаешь получить

? animufag ?
06.02.2018
07:33:42
ну тип например функция (1 /) - очевидно крешится при некоторых значениях
а другая функци заменяет 0 на 1, тк решено что это ок
да слово неудачное
доопределяет

Oleg
06.02.2018
07:35:46
Если я правильно помню, одна из них для интежеров, другая для фракшнолов
И это в этом случае две разных функции

Google

? animufag ?
06.02.2018
07:37:18
это был пример
хорошо
функция принимает корректный xml и кидает эксепшон при некоторектном

Oleg
06.02.2018
07:38:31
и что это нам демонстрирует?

? animufag ?
06.02.2018
07:38:33
вторая функция берёт некоректный и удаляет некоректные теги
да чёрт знает - меня попросили пояснить что я имел ввиду

Yuriy
06.02.2018
07:49:07
но получается функция, выдающая какую-то фигню
ты смотришь на выход, видишь 42, думаешь, как здорово, а на самом деле там не может быть 42
приборы! 120!

Admin
ERROR: S client not available

Yuriy
06.02.2018
07:51:05
а главное, зачем?

Mikhail
06.02.2018
07:55:30

Max
06.02.2018
07:55:40
Философские беседы с утра...)

? animufag ?
06.02.2018
07:57:19

Mikhail
06.02.2018
07:57:49
а теперь типа хочешь интеграционное навернуть?

? animufag ?
06.02.2018
07:59:15
Типа да. Ну мб так себе идея генерить всё подряд квикчеком

Mikhail
06.02.2018
08:00:11
мне кажется, квикчеком надо именно свойства тестировать, а не заменять им полностью все
если ты знаешь конкретные крайние случаи, которые хочешь обработать, то их надо бы вручную перечилслить, не лениться

? animufag ?
06.02.2018
08:11:33
свойства тоже можно одним тестом описать
рандомизация там как бы особо ни к чему
так уверенности добавляет

Google

Alexander
06.02.2018
08:19:26
@vlastachu catchAll

? animufag ?
06.02.2018
08:20:20
а ну это немного другой способ решить проблему

Yuriy
06.02.2018
08:20:41
а, наоборот? не выходы подмухлевать, а некорректные входы почистить?

? animufag ?
06.02.2018
08:20:54
как бы нужно хотя бы частично ок распарсить

Aleksey
06.02.2018
08:21:20
Если это XML, то можно событийным парсером разбирать
SAX или типа того
Тогда частично разберется хоть что-то

Yuriy
06.02.2018
08:22:37
не, если хотя бы частично распарсить, то более правильно внутри парсера коррекцию делать, исходя из семантики, как в HTML или разных языках программирования
на всякий случай. речь ведь не о разборе HTML средствами XML?

Александр
06.02.2018
08:27:18
Это, кстати, важная задача в контексте всяких редакторов кода.

? animufag ?
06.02.2018
08:27:29
ладно, раз вам хочется вникать в мои проблемы: речь о html, средствами тупого токенайзера (там всё ок) и далее передаётся в мою функцию некоторые случаи в которой должны быть недостижимы. ну то есть первым проходом после токенайзера я дополняю незакрытые теги и убираю лишние закрывающие
браузер это кстати делает весьма неоднозначно в зависимости от того какой это тег, и спецификации на этот счёт или просто статеек я не нашёл

Yuriy
06.02.2018
08:29:24
некоторые рекомендации по исправлению HTML есть в самом стандарте

? animufag ?
06.02.2018
08:29:40
https://www.w3.org/TR/html52/introduction.html#syntax-errors
наверное вот это имеешь ввиду
выглядит как-то слабенько

Yuriy
06.02.2018
08:30:00
вообще, эта задаче уже решена пятьсот раз, в каждом браузере и библиотеках типа beautiful soup

? animufag ?
06.02.2018
08:30:13
да

Yuriy
06.02.2018
08:30:21
я же сказал "некоторые"

? animufag ?
06.02.2018
08:30:23
скорей всего везде по-разному

Yuriy
06.02.2018
08:30:49
ты пишешь свой пятьсот первый beautiful soup?