169 похожих чатов

У нас по сути есть два моноида, первый это Applicative

и можно выразить как

unit :: f ()
unit = pure ()

combine :: f a -> f b -> f (a, b)
combine = liftA2 (,)

combine unit x ~ x
combine x unit ~ x
combine a (combine b c) ~ combine (combine a b) c

второй это просто alternative

empty <|> x = x
x <|> empty = x
a <|> (b <|> c) = (a <|> b) <|> c

первый моноид для списка это ~ декартово произведение, второй это склейка

в случае списка эти моноиды еще и связаны тем, что
combine empty x = empty
combine x empty = empty
combine a (b <|> c) =[sort]= combine a b <|> combine a c
но не уверен что эта связь требуется, она может как-то выводится из many/some/определений, но я не уверен

оба этих моноида полностью соответсвуют семантике нондетерменизма, потому что если например у нас есть два человека A и B, и каждый из людей может сделать либо первое действие, либо второе, то у нас 4 варианта сценариев (combine)

а если у нас есть два человека которые могут сделать 2 действия, и еще другие два человека которые могут сделать другие два действия, то у нас уже 8 сценариев (<|>)

если мы заменим Alternative для листа на такой, что один из них будет отбрасываться, то нужно как-то и поменять Applicative инстанс, потому что Alternative инстанс уже не будет соотвествовать семантике нондетерменизма, у него будет какая-то своя семантика, значит и остальных должна быть такая семантика

И вот вопрос, а какой это должен быть инстанс Applicative? Что это за семантика такая вообще? Я не знаю

2 ответов

2 просмотра

Забавно кстати что AltList полностью соответствует этим "законам"

кана- Автор вопроса
aadaa_ftgaa
Забавно кстати что AltList полностью соответствует...

законам да, соотвествует, это нормальный альтетнатив сам по себе, только для него я не могу придумать парный аппликатив

Похожие вопросы

Обсуждают сегодня

Anyone here suffers from unexplained aural migraines, who would be up for talking for a bit? Doesn't *have* to be aural, but I am not asking about headaches, I mean actual mi...
Martin Rys
55
Всем вечера. Подскажите как лучше сделать. делаю на Д10 Например будет база данных на SQLite. в ней будет много таблиц. более 50шт Типа справочник. Содержать ID Name Id p...
Андрей Т 🐎
10
подскажите пожалуйста, как мне освободить результат записанный в переменную result? в чем проблема подскажите если МОЖЕТЕ?
Михаил Helper
28
Добрый день! Хочу спросить совета. Хочется в скрипт добавить некую конструкцию, что скрипт создал файл, который нужно потом скопировать в определенное место. Нашел такой сп...
Mikhail
4
Вопрос по WIN32: Насколько я понимаю то все функции win32 привязаны к объектам операционной системы. Например консоль, файл, кисть, окна итд. Следовательно функции win32 упра...
Tommy Vercetti
6
in telegram can i have multiple username? so instead of having multiple account for example one for work, one for friend and one for family with three diff numbers. using one ...
Mr Thieves
6
кто-то пользуется компонентами rx ? как их лучше ставить, через OPM? (lazarus)
Iluha Companets
15
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
Hello, can I install macOS and run flutter on a virtual machine? Is it possible to print for iphone?
Mazones
11
есть тут кто-то , кто только начал изучать си? если проходите курс на степике или как-то сами изучаете, пишите, может, скооперируемся?..
Eule
25
Карта сайта