Являются ли свободные монады церковными цифрами?
Комментатор недавно заявил :
Свободные монады - это церковные числа , просто использующие (Эндо-) функторы вместо функций!
Он продолжает объяснять это говоря:
Они оба являются эндофунктом (ион|или), составленным 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)))
, композиции из нуля или болееf
s, примененной кx
.