var roundedSqRoot = Math.round.compose(Math.sqrt); roundedSqRoot(28);
I was curious to figure out how to write this in C#. Considering that the input parameter type would be the same as the function output type, I came up with
public static Func<T1, T1> Compose1<T1>(params Func<T1, T1> [] functions)
{
return new Func<T1, T1> ( (input) => {
T1 t1 = input;
var l = functions.ToList();
l.Reverse();
foreach(var f in l) {
t1 = f(t1);
}
return t1;
} );
}
static void Main(string[] args)
{
var newF1 = Compose1<double>(Math.Round, Math.Sqrt);
Console.WriteLine(newF1(28));
}
No comments:
Post a Comment