Я пытаюсь создать общую последовательность, которая будет вести себя следующим образом:
val generic_sequence= fn : (int -> int) -> int seq
, то есть она должна получить в качестве входных данных функцию:
foo: int -> int
и создатьпоследовательность, которая активирует foo для всех натуральных чисел.
Я написал следующий вспомогательный код (работает нормально):
datatype 'a seq = Nil
| Cons of 'a * (unit-> 'a seq);
fun head (Cons(x,_)) = x;
fun tail (Cons (_,xf)) = xf();
fun naturals k = Cons(k,fn()=>naturals (k+1));
, и когда я попытался реализовать общую последовательность, я застрял.Вот где у меня.
fun aux (Cons(x,xf))= (Cons(foo x,(fn=>aux((xf())))));
fun generic_seq foo = (aux (from 0));
У меня 2 проблемы:
Не компилируется
Я не уверен, что мой подход правильный
Буду признателен за помощь здесь.