sky*_*yde 3 scala traits typeclass c++11 c++-concepts
Scala traits Haskell类型类和C++ 0x Concepts之间有什么区别?
就像下面这个例子中Observer声明一个抽象成员一样,receiveUpdate Observer实际上是一个"匿名"类型或结构类型.
package observer
trait Subject {
type Observer = { def receiveUpdate(subject: Any) }
private var observers = List[Observer]()
def addObserver(observer:Observer) = observers ::= observer
def notifyObservers = observers foreach (_.receiveUpdate(this))
}
Run Code Online (Sandbox Code Playgroud)
因此,只有两个有共同点,但不是很多,即Concepts和Type-classes.本文中已经对两者进行了比较:C++概念和Haskell类型类的比较