Я попытался определить генератор с фиксированной точкой в C#, который вы видите на многих функциональных языках. Я считаю, что foldr обычно определяется в терминах генератора с фиксированной точкой. Я покажу, что это определение Haskell, а затем то, что у меня есть на C#. Любая помощь приветствуется.Генератор неподвижных точек в генераторах C#
//Haskell
fix f = f (fix f)
//C# (Many attempts)
public static Func<Func<T, T>, T> Combinator1<T>(this Func<T, T> f)
{
return x => f(Combinator1(f)(x));
}
public static Func<Func<T, T>, T> Combinator2<T>(this Func<T, T> f)
{
return x => x(Combinator2(x)(f));
}
public static Func<T, U> Combinator3<T, U>(Func<Func<T, U>, Func<T, U>> f)
{
return f(x => Combinator3(f)(x));
}
Какая проблема вы видите? – JaredPar
@ JaredPar Я еще не пробовал строить с ним какие-либо функции, просто пытался правильно определить определение. Благодарю. –
Итак, что же вы спрашиваете? – JaredPar