@haskellru

Страница 808 из 1551
Александр
05.02.2018
16:38:51
Monads are trees with grafting [c]
Да-да, монады - это перегруженные точки с запятой, слышали мы это. Это все некорректно

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

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

kana
05.02.2018
16:40:34
А почему?
по одному из определений

Александр
05.02.2018
16:40:56
Это уже занудство. Контекст про монады.
Ну окей, даже если контекст про монады, непосвященному не ясно, что здесь является монадой: m, a, или же m a

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

A64m
05.02.2018
16:43:28
Ну окей, даже если контекст про монады, непосвященному не ясно, что здесь является монадой: m, a, или же m a
монадой является не m и не a а способ композить стрелки такого типа, т.е. набор операций, имеющий свойства

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

это не О. конечно, но вроде так

просторечие

Александр
05.02.2018
16:45:55
монадой является не m и не a а способ композить стрелки такого типа, т.е. набор операций, имеющий свойства
Погодите, способ композировать стрелки (или, по-другому, стратегия связывания) - это лишь часть монады, а именно, оператор bind. Но там же еще есть return, а в суперклассах также fmap. Следовательно, определение про способ композиции неполно

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

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

Google
Александр
05.02.2018
16:47:27
монадический тип - тип имеющий инстанс Monad ваш К.О.
Этого тоже недостаточно. Я могу определить такой тип, а он не будет проходить монадические законы.

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
такие же как у плавучки

они там тоже из-за того что ассоциативность не соблюдается

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
Вот уже года три я рассказываю плюсовикам Хаскель, обернутый в плюсы. Меня очень радует, что концепции, существующие в мире ФП уже десяток лет (а то и два), вызывают такое неподдельное удивление.

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
спам, очевидно

? 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
Философские беседы с утра...)

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?

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