我是D的新手,我正在寻找一种好的方法来编写类似Haskell的类型类,例如D中的Functors,Monoids等.
这是在Tango或Phobos中实现的吗?
我听说过对某些属性启用编译时类型检查的特性.它们可以用于类型类吗?
我已经尝试了一些模板专业化并想出了这个:
// Monoid.d
// generic Monoid gets called when there is no instance of Monoid for Type T
class Monoid(T) {
pragma(msg, "Type is not a Monoid");
}
// Monoid instance for double
class Monoid(T:double) {
static T mzero() { return 0; }
static T mappend(T a, T b ) { return a + b;}
}
// Monoid instance for int
class Monoid(T:int) {
static T mzero() { return 0; }
static T mappend(T a, T b …Run Code Online (Sandbox Code Playgroud)