Denis
монады качай бесплатно без смс
Cheese
платишь написанием кода. в случае бесплатной монады ты не платишь написанием кода специально для монад
Vladislav
Не понял, а сама реализация свободной монады это не код?
Cheese
а слово "свободный" означает возможность изменения каких-то параметров (ну, я всегда так думал), например, положения в пространстве. по какому параметру свободна "свободная" монада? нет, она жёстко привязана к функтору, никакой свободы, наоброт
Cheese
Не понял, а сама реализация свободной монады это не код?
но она уже написана один раз для всех, ты не платишь за каждый конкретный случай использования
Vladislav
Так же как я не реализую ReaderT отдельно для каждого типа среды, теперь это "бесплатный" ридер?
Cheese
В итоге можно предоставить любой join?
куда можно предоставить?
Denis
Не уверен насчет монад, но свободные категории и моноиды фактически генерируются из графа или алфавита. Поэтому свободность тут скорее в том, что используя используя любой генератор ты получаешь моноид или категория ничего не доказывая.
Зигохистоморфный
В итоге можно предоставить любой join?
ну вот так например) runMonad :: Functor f => (a -> f a) -> (f (f a) -> f a) -> Free f a -> f a runMonad u j = cata go . unfree where go (ReturnF x) = u x go (BindF x) = j x
Зигохистоморфный
по сигнатуре видно что где должно быть)
Denis
искать глубинный смысл в заимствованной терминологии в хаскелле скорее не надо
Denis
в хаскелле это не формализация математики, это “по мотивам” инструментарий
Vladislav
моя артистическая интерпретация "свободных" структур в том, что они ни к чему не привязаны (к конкретной реализации) и представляют собой эссенцию некой структуры
Alexander
Free там это сокращение от Freek
Alexander
не более того
Vladislav
например, мы можем проинтерпретировать список (свободный моноид) с помощью любого конкретного mconcat
Alexander
тогда нету неоднозначности и все на своих местах
Зигохистоморфный
Слово «Free» в свободной монаде – отсылка к теории категорий, где она понимается как левое сочетание забывающей операции (Разные трактовки свободной монады от нескольких Haskell-гуру можно почитать здесь : http://stackoverflow.com/questions/13352205/what-are-free-monads. Прим. переводчика). То есть, если мы возьмём монаду, скажем, State s, с return, bind, fmap, put и get операциями, и забудем первые две, то мы сможем восстановить монаду как Free (State s), с протезированием return и bind.
Denis
тоже эссенция умножения, тоже имеет свою структуру
Vladislav
так тьюпл это и есть free product
Vladislav
а в качестве non-free product можем рассмотреть какие-нибудь pairing functions для чисел
Vladislav
по крайней мере, в моей артистической интерпретации (ладно, пора прекращать)
Cheese
то есть Free бесплатна по затратам на реализацию, но свободна от семантики/интерпретации? тогда всё встаёт на свои места
Denis
cartesian product графов рассмотри, это тоже product, но free не пахнет
Denis
а для абстрактного product характерно все то же самое что выше говорили
Denis
как насчет “свободна от математики”?
Vladislav
от смысла свободна конкретного, как и положено в CT, abstract nonsense
Alexander
чего вам варинт с "для фриков" не понравился?
Cheese
надо математику освободить от слова "free". заставлять его специализировать до "cost-free" или "independent"
Alexander
это нетолерантно!
Denis
когда математику программисты от чего-то освобождают, это похоже на спасительную демократию на джет-файтерах
Vladislav
Заточили математику в кандалы формализмов. Свободная математика — это когда система аксиом противоречива, а потому всё дозволено
Cheese
или освободить математику от английского языка, писать на Ифкуиле, там всё гарантированно однозначно
Cheese
Ифкуиль — самый толерантный язык
Vladislav
Он не толерантен к тем, кто его не осиливает изучить
Alexander
наконец-то математика сможет объяснитьв все в этом мире
Vladislav
Давайте где-нибудь сделаем Wiki с переводом FP терминов на русский
Зигохистоморфный
Заточили математику в кандалы формализмов. Свободная математика — это когда система аксиом противоречива, а потому всё дозволено
ну как бы так и есть) просто может нет еще более высшей степени) Наприме Евклид считал что его аксиомы неоспоримы, а оказалось просто его геометрия была лишь частным случаем более общего (Риман, Лобачевский)
Leonid 🦇
Халявные монады
Alexander
халяльные же
Leonid 🦇
liftFree - выжатьХаляву
Denis
тут недавно в твиттере предлагали переименовывать Functor в Mappable, а Monad в Bindable
Denis
потому что непонятно
Vladislav
tbh было бы неплохо
Vladislav
А то ведь путают с КТ-ными функторами и монадами
Vladislav
хотя это очень такой special case
Denis
с Bindable не согласен категорически(pun intended), т.к. Monad все таки пачку законов подразумевает и может быть выражено через return/join без bind
Denis
с остальным такая же проблемка в моем понимании, имплиситные законы все с жаргонизмами лучше идут
Vladislav
Ну я тоже предпочитаю смотреть на монаду как на fmap+join+return, только bind остается самой используемой операцией
Vladislav
а потому bindable более приближен к реальности
Denis
free bindable
Denis
все больше и больше на порнобаннеры похоже
Vladislav
free это вообще pun для tree, потому что обобщение дерева
Denis
s/free/tree/g
Denis
и вопрос закрыт
Denis
tree monad
Vladislav
Free Pair это обычное бинарное дерево (data Pair a = P a a)
Vladislav
Free [] это обычное N-арное
Vladislav
Точно говорю, кто-то называл и хихикал
Зигохистоморфный
прекратите это) мы же не в чатике по жс
Зигохистоморфный
Free Pair это обычное бинарное дерево (data Pair a = P a a)
ну как бы бинарное дерево и есть вроде простейшей монадой
Vladislav
простейшая монада это Identity
Зигохистоморфный
тут все сказано https://www.stackage.org/haddock/lts-9.13/free-4.12.4/Control-Monad-Free.html#t:MonadFree
Зигохистоморфный
ок просто свободной монадой
Зигохистоморфный
список не подходит)
Denis
а чего не Proxy?
Зигохистоморфный
прокси вообще хак какой-то
Alexander
Proxy проще Identity