TOV_MULTIMASSO
Каких-либо реализаций
type 'f Fix = Fix of { unFix : 'f (Fix 'f) }
не завезли? А то фримонады в FS+ есть, а неподвижной точки нет
Ayrat
TOV_MULTIMASSO
это который let fix f x = f (fix f) x?
Ayrat
Ayrat
Кстати не скомпилируется
TOV_MULTIMASSO
Опять я про rec забыл
Ayrat
Щас мы будем по пятому кругу обсуждать что объявлять Y через рекурсию чит, да и зачем. Если есть рекурсия, надо ей пользоваться
TOV_MULTIMASSO
А, вы ещё и а-ля (f. f f) (f. f f) объявляли, ну, Z-комбинатор, я имею виду
Ayrat
Через индуктивные типы тоже чит, так как они в общем изоморфны рекурсивным функциям
TOV_MULTIMASSO
Тащить что-то такое в код я б не стал
Диёр
это на эльфийском?
Ayrat
Короче, Y в фшарпе не нужен, так как есть rec функции и рекурсивные типы
TOV_MULTIMASSO
> кольце
Кек
TOV_MULTIMASSO
Есть у кого ссылка на реализацию HKT через first-order types?
TOV_MULTIMASSO
И, кстати, есть новости по параметризованным модулям?
Ayrat
Тебе снипет скинуть?
Ayrat
Lightweight HKT Encoding | F# Snippets
http://www.fssnip.net/7Wy/title/Lightweight-HKT-Encoding
Just
хотя там + и * освоил )
Ayrat
Вообще можно все снипеты этого наркомана посмотреть. Эрика мать его Тсарпалиса
Vladislav
Vladislav
Проще сюда
Ayrat
Проще сюда
А, да. Он же их туда встроил недавно...
Ayrat
Норкоман
TOV_MULTIMASSO
Мда. С таким подходом можно запросто себе в ногу выстрелить
Ayrat
По мне - вырвиглазная говнина
Doge
По мне - вырвиглазная говнина
Проблема в том, что эти хаки становятся вообще не юзабельными если пытаешься даже те же трансформеры и т.п. выразить.
Doge
Так что пользы от такой эмуляции не много
TOV_MULTIMASSO
Вся соль трансформеров в том, что тебе выведение типов помогает. Но тут, я боюсь, оно всё будет в obj выводить
TOV_MULTIMASSO
Ну или я не понял идеи этих хаков
Ayrat
TOV_MULTIMASSO
А, да, я щас посмотрел, там в соответствие App<'f, 'a> ставится некое 'fa
Андрей
Hog
Anonymous
Короче я вас понял
Anonymous
F# хорош если без фп головного мозга
Ayrat
Anonymous
Я просто когда начинал писать что то практичное на f# то думал как это все сделать функциональному как покаррировать и тп
Anonymous
Я так понимаю к f# надо относиться как "проще и лучше чем c#" а не "фп аналог c#"
Anonymous
Правильное направление мыслей?
Anonymous
Или может я таки чето не улавливаю
Denis
Надо просто относиться как к инструменту для решения проблем
И не пытаться сделать "как правильно и фпшно"
Ilya
Ух, что бан на день с человеком делает!
Denis
Я бы еще добавил что не бояться пользоваться ООП и императивными фишками когда есть необходимость (например, https://gist.github.com/Szer/4e9205946bfb92e41ef657af246c83b4 показывает перфоманс)
Denis
Хорошо оно нигде не работает, в тч и на хаскеле и на скале
Ну точнее так, если у кого то где то перекос - то ничего хорошего ждать от этого кода не стоит
Denis
Вообще перекос как в ооп так и в фп обычно хорошим не заканчивается
Denis
я говорю о том что упарываться ни по чему не надо)
Критерий
нужно обязательно упороться, потому что если не упороться - никакого чуда не произойдёт
Vladislav
https://github.com/fscx-projects/fscx
Doge
Другой вопрос, что для этого нужны будут люди в команде, которые знают что они делают и зачем оно все вообще нужно.
А то можно получить карго культ как в тех кодовых базах, которыми тут людей пугают.
TOV_MULTIMASSO
У ФП и иммутабельности есть одно преимущество - такой код легче распараллелить.
Doge
Критерий
а также дебажить и статически анализировать
TOV_MULTIMASSO
А, ну и монадки позволяют скрыть всю сантехнику и разводку проводов в коде.
Критерий
а то когда в какой-то список накидываются разделители, а потом каждому элементу списка назначаются идентификаторы, по которым затем происходит сортировка - очень сложно понять, почему порядок неправильный, пока не замечаешь, что разделители шарятся и, соответственно, идентификаторы перезаписываются
TOV_MULTIMASSO
Я щас пишу граф-редусер, для исполнения скриптового языка, - так вот, я запихал в монаду обработку ошибок и трекинг текущего скоупа. И то, и другое появляется в коде только в нужных местах.
Shub
https://github.com/Mojang/DataFixerUpper/tree/8b5f82ab78b30ff5813b3a7f3906cd3f4f732acf/src/main/java/com/mojang/datafixers/optics
Doge
Shub
профункторы и линзы на жаве для игры-песочницы, лол
Doge
профункторы и линзы на жаве для игры-песочницы, лол
Это вроде часть для обновления мира при переходе с одной версии на другую.
Могу предположить, что по каким-то причинам там данные иммутабельны и тогда уже при сложных операций с линзами куда проще будет, чем без них. Несмотря на весь абсурд линз на джаве
Shub
линзы - это ж для глубоко-структурированных данных, а не для иммутабельности
Doge
Doge
Если они мутабельны, то можно и без линз жить
Romɑn
https://twitter.com/k_cieslak/status/1218873436992364545?s=19
Даже Кшиштоф подкладывает " бай дизайн "
Doge
Romɑn
Doge
Ты ничего не понял
Ну я не знаю отсутствие каких фич обсуждают в слаке, но могу предположить
Крылатый
https://twitter.com/MStrehovsky/status/1218966180104458240?s=19