Каждый раз, читая ваши статьи, нахожу что-то новое.
Интересно, раз у нас уже есть bytestring в памяти за бесплатно, может можно подключить стратегии и работать параллельно намвсех ядрах.
Надо только придумать как склеить результаты.
Возникло странное недопонимание. Я нигде про запреты не писал.
State s — монада, внутри которой есть доступ к состоянию
и, с этой позиции, вычисление a->(State s) b не является чистой функцией от a.
Но, после разворачивания, вычисление становится чистой функцией от (a,s).
Побочный эффект это не только IO.
Лично мне стало очень интересно сколько из участников беседы реально понимают что такое return и bind, как они связаны с join и причем тут какие-то «законы». Ну и до кучи что же такое категория Клейсли.
ФП без ТК это конечно хорошо, но — плохо.
Можно пример того, что используется как монада, но не монада? Просто мне тяжело представить, как можно пренебречь, например, отсутствием ассоциативности.
Дело в том, что монада чтения это вполне конкретный эндофунктор, со вполне конкретными естественными преобразованиями. И да, с помощью неё можно организовать доступ к некоторому контексту. Но это не значит, что любой способ доступа к контексту будет монадой и, тем более, монадой Reader.
ReaderT это трансформер. Монадой будет ReaderT m, где m-монада.
Практический смысл можно найти, например, в filterM. Хотя и несколько синтетический.
Он же, в данном случае, эндофунктор. Тогда если мы Nullable в кодомен не включили, то и в домене его нет. Тогда куда функтор?
Каждый раз, читая ваши статьи, нахожу что-то новое.
Интересно, раз у нас уже есть bytestring в памяти за бесплатно, может можно подключить стратегии и работать параллельно намвсех ядрах.
Надо только придумать как склеить результаты.
Рекомендую вспомнить судьбу Ковентри.
Очень интересно.
Я понял ваши аргументы.
State s — монада, внутри которой есть доступ к состоянию
и, с этой позиции, вычисление a->(State s) b не является чистой функцией от a.
Но, после разворачивания, вычисление становится чистой функцией от (a,s).
Побочный эффект это не только IO.
f :: a->State s b не чистая,
Но runState (f x) s0 — чистая.
Такой вот фокус.
Гарантия в том, что это не практики а математика.
Они могут морально устареть, но стать от этого неправильными не могут никак.
и тут, внезапно, на сцене появляется ее величество ассоциативность.
ФП без ТК это конечно хорошо, но — плохо.
Спойлер: return в хаскеле НЕ ключевое слово.
Я не настолько силён в английском. Итак, там нарушена ассоциативность, о чем внизу написано. Как это использовать, не взорвав себе голову.
Вы просто не умете готовить этих кошек.
Кмк ошибка в том, что декомпозиция задачи осуществляется в импеоативной парадигме, а решение в функциональной, отсюда конфликт.
Можно пример того, что используется как монада, но не монада? Просто мне тяжело представить, как можно пренебречь, например, отсутствием ассоциативности.
Дело в том, что монада чтения это вполне конкретный эндофунктор, со вполне конкретными естественными преобразованиями. И да, с помощью неё можно организовать доступ к некоторому контексту. Но это не значит, что любой способ доступа к контексту будет монадой и, тем более, монадой Reader.
Монады это не шаблоны проектирования.
Что-то не то вы загуглили. Линза это такое совмещение геттера с сеттером, поддерживающее композицию.
А линзы?
В математике нет царских путей.