У меня есть задание, в котором мне нужно реализовать церковные цифры в SML, используя тип данных: тип данных 'церковь = C of ('a -'a) * 'a -> 'a
Я должен написать функцию create :int -> 'церковь и функцию ChurchToint. Пока у меня есть следующий код:
datatype 'a church = C of ('a -> 'a) * 'a -> 'a
val ZERO = C(fn (f,x) => x)
fun subCreate 0 (f,x) = x
| subCreate n (f,x) = f (subCreate (n-1) (f,x))
fun create n = C(fn (f,x) => subCreate n (f,x));
fun churchToInt cn = cn (fn x => x + 1) 0;
Я знаю, что я довольно близко. Не могли бы вы помочь мне правильно реализовать это? Спасибо