scala/ScalaBook/chapter-12/src/main/scala/scalabook/ep/family/ooc/reprpluslang.scala

package scalabook.ep.ooc

/**
 * @author Christos KK Loverdos
 */

trait ReprPlusLang extends PlusLang with ReprLang {
    class PlusD(a: Data, b: Data) extends super.PlusD(a, b) with BaseD {
        def repr = a.repr + " + " + b.repr
    }
} 

object FixedReprPlusLang extends ReprPlusLang {
    type Data = BaseD

    val n1: Data = new NumD(10)
    val n2: Data = new NumD(13)
    val n3: Data = new PlusD(n1, n2)

    println(n3.repr)
}