我讀了關於Haskell類型類和C#接口的Joe Duffy這篇博文。瞭解類型類,隱含的Scala和C#
我想了解什麼可能會使得C#有型類, 我不知道像Scala的implicits功能是否可以解決這個問題?
具有這種功能將使寫這樣的事情:
public interface IReducableOf<T>
{
T Append(T a, T b);
T Empty();
}
public T Reduce(this IEnumerable<T> vals, **implicit** IReducerOf<T> reducer)
{
Enumerable.Aggregate(vals, reducer.Append);
}
確保我們在我們的語境IReducerOf<T>
比編譯器實現可能「只是」挑減速並用它來執行代碼。
當然,這段代碼無法編譯。
但我的問題是:
可這能實現類型類?
這與在scala中發生的事情類似嗎?
我在問這個問題,而不是針對特定的問題。
UPDATE
我遇到這個GitHub repo就可能的執行類型的類在C#中
是的。 「隱式」是Scala如何輸入類。主要區別在於'隱式'通過查找範圍值來工作,而類通過獨特實例的全局數據庫工作 –
當您說類時,您指的是haskell的類型類?所以在編譯時,haskell搜索全局實例db以查找匹配的實例?) – barakcaf
這是正確的。 –