Alexander
Похоже на правду
кана
другое решение: просто сделать свой модуль, который будет иметь тот же интерфейс, что stm, но дополнительно логировать
кана
решения одинаковые в случае одного интерпретатора
кана
но что не нравится Александр , что нет разделения и абстракции
Alexander
другое решение: просто сделать свой модуль, который будет иметь тот же интерфейс, что stm, но дополнительно логировать
Это если у тебя изначально функции нечистые в интерфейсе. Ну и задать этому второму модулю рантайм-инфу (куда логгировать) ты не сможешь, ведь в исходном интерфейсе эта рантайм-инфа отсутствует
кана
то есть "тот же интерфейс" - это скорее неформальная фраза
Alexander
на самом деле у Free ещё бонусы по композабельности эффектов
кана
важный вопрос
Alexander
но формально это новый интепретатор
Alexander
который может делать больше
Alexander
в этом случае нужно обобщение
кана
почему там ник, а там имя
Alexander
телеграм меняет
Alexander
меня просто *бесит* когда люди интепретируют технологии как не то, чем они являются
Alexander
меня просто *бесит* когда люди интепретируют технологии как не то, чем они являются
Не то, как их автор задумывал? Проблема автора. Надо грамотнее дизайнить
Alexander
Не то, как некоторые заресечили? Ничья проблема. Подходы должны быть разные
Alexander
при сравнении с другими технологиями навешивают на них дополнительные свойства, как уникальные для технологии
Alexander
становится тяжело разговаривать
Big Bux Chungus
@graninas хм, я тут подумал и понял, что не прав, можно в тайпкласс ФТ запихнуть рантайм значения, надо просто компилировать в Reader (условно)
Alexander
ещё раз FT ~ Free(r)
Big Bux Chungus
да
Alexander
вот вообще 1 в 1
Alexander
можно написать класс который при выполнении построит теги
Alexander
и можно написать интерпретатор который fold-ит теги
Big Bux Chungus
если под Free понимать не только free monad, то да
Alexander
а если только?
Зигохистоморфный
ещё раз FT ~ Free(r)
ну как бы да, FT -> Free (через определение инстанса для FT) Free -> FT (через катаморфизм/анаморфизм для Free)
Зигохистоморфный
насколько я помню, то и фри интерпретаторы можно экстендить легко
Alexander
у Free(r) и extensible-effects есть хорошие свойства по композабельности эффектов
Alexander
про Free не знаю
Big Bux Chungus
а если только?
data RuleAlg r = RuleAlg { and :: r -> r -> r or :: r -> r -> r not :: r -> r prefix :: String -> r }
Alexander
вот тут уже можно говорить про полезность
Зигохистоморфный
Big Bux Chungus
это тоже FT
Зигохистоморфный
ну разновидностей много
Alexander
я не очень понял к чему это было, но class ~ record
Зигохистоморфный
Datatypes a la carte это вообще объединенный подход
Alexander
просто вопрос в наличии когерентности и явности передачи
Big Bux Chungus
это по поводу Free
Big Bux Chungus
в данном случае тебе нужна начальная алгебра, т.е. "free" для RuleAlg будет data FRule = And FRule FRule | Or FRule FRule | Not FRule | Prefix String
Big Bux Chungus
не уверен, что термин free всё ещё корректно использовать в такой ситуации, но концептуально это и есть аналог Free для (FT-алгебры + Monad)
Big Bux Chungus
Free тебе даёт монаду for free. а тут мы ничего for free не получаем, кроме начального объекта, т.е. возможности сфолдить с помощью любой другой алгебры
Big Bux Chungus
правда и сам Free - тоже начальный объект в какой-то категории
Big Bux Chungus
не надо, зачем?
Зигохистоморфный
а что ты хочешь построить? Free FRule?
Зигохистоморфный
каинды не сойдутся
Big Bux Chungus
нет, не хочу
Зигохистоморфный
а так это вообще просто adt
Big Bux Chungus
да
Big Bux Chungus
это к тому, что FT != Free
Зигохистоморфный
cфигали?
Big Bux Chungus
т.к. FT значительно более обширное понятие
Зигохистоморфный
изоморфизм построить можно
Cheese
каинды не сойдутся
каинд (сходиться)
Зигохистоморфный
да все есть алгебры, просто в разных категориях
Зигохистоморфный
если уж все рассахарить досконально
Зигохистоморфный
f t -> t есть все структуры
Зигохистоморфный
моноиды, полугруппы
Dmitrii
чего-то сегодня бекендсикрета мало
<sarcasm>На работе сказали, что надо работать, а не в твиттере сидеть весь день 😞 </sarcasm>
Leonid 🦇
mtl круче free
Зигохистоморфный
каинд (сходиться)
это ты меня за грамматику подколол?)
Зигохистоморфный
mtl круче free
мтл как раз и есть final tagless
Big Bux Chungus
изоморфизм построить можно
если подразумевается Free как free monad?
Leonid 🦇
мтл как раз и есть final tagless
а мужики то не знают
Зигохистоморфный
Big Bux Chungus
например есть FreeAp
Зигохистоморфный
да какая разница что будет умножением
Big Bux Chungus
ок, есть []
Зигохистоморфный
Compose/ Day convolution
Зигохистоморфный
тут тоже моноид)
Зигохистоморфный
да
иногда и я прокалываюсь
Зигохистоморфный
@alexknvl просто какая разница в какой категории моноид?
Зигохистоморфный
FreeMonoid, FreeMonad, FreeApplicative, FreeAlternative, FreeFunctor, FreeProfunctor..
Зигохистоморфный
есть единица и есть умножение