Являются ли свободные монады церковными цифрами?
Комментатор недавно заявил :
Свободные монады - это церковные числа , просто использующие (Эндо-) функторы вместо функций!
Он продолжает объяснять это говоря:
Они оба являются эндофунктом (ион|или), составленным 0-n раз
Я получаю, что церковные цифры - это набор анонимных функциональных композиций, с композицией для каждого числа. Я просто не понимаю, как это относится к свободным монадам.
Мой вопрос:: Являются ли свободные монады церковными числами?
1 ответ:
Вроде того.
Обобщение церковных числительных состоит в том, что числительное
nявляетсяf^n, гдеf- эндоморфизм (стрелка, домен и кодомен которой являются одним и тем же объектом) в некоторойкатегории иf^nозначает "составлятьfс самим собойnраз". Обычные церковные числа относятся к категории множеств , где стрелки являются функциями, Поэтому, например, число3, примененное кfиx, являетсяf(f(f(x))). Например, еслиf(x) = x + 10, то3 f 0является30.В категориикатегорий стрелки являютсяфункторами . Там число
3, примененное к некоторому функторуfи объектуx(например, типу), снова являетсяf(f(f(x))). Еслиfявляется, например, конструктором типаf x = Int => x, то3 f StringявляетсяInt => Int => Int => String, типом функций, которые принимают три аргументаIntи возвращают aString.Теперь для функтора
Таким образом, дело не в том, что "свободные монады-это церковные числа", а в том, что свободная монада-это конструкция типа на некотором функторе, и церковные числа на этом функторе встраиваются в этот тип.f,Free fявляется лисвободной монадой , порожденнойf, где экземпляр типаFree f xлибо простоxилиf (Free f x). Таким образом, он будет иметь вид формыf(f(f(...(x))), композиции из нуля или болееfs, примененной кx.