Xod*_*rap 5 c# functional-programming
我想要求实现接口(或从类派生)的东西包含一个实现Aggregate
。也就是说,如果他们是 typeT
我希望他们有 type 的东西Func<T,T,T>
。在 Haskell 中,这被称为“幺半群”。
编辑:我想调用的是这样的:
list.Aggregate((x, accum) => accump.MAppend(x));
Run Code Online (Sandbox Code Playgroud)
根据 DigalD 的回答,这是我最好的尝试,但它无法编译:
interface IMonoid<T>
{
T MAppend(T other);
}
class Test
{
public static void runTest<T>(IEnumerable<IMonoid<T>> list)
{
// doesn't work
list.Aggregate((x, ac) => ac.MAppend(x));
}
}
Run Code Online (Sandbox Code Playgroud)
Mic*_*lap -1
难道你不应该让接口也变得通用吗?
interface IMonoid<T>
{
public IMonoidHandler<T> handler {get;set;}
}
Run Code Online (Sandbox Code Playgroud)