not found: type in main method scala -
i'm using scala 2.11 , scala ide. , have following problem: have 2 files 1 implementation fo weight biased leftist heap , driver, object, main method.
wblheap.scala
package heaps abstract class wblheap[+a] { /** * o(1) * @return weight of heap */ def weight() : int /** * */ def isweightedleftist(): boolean /** * wblt n elements, length of right spine * <= floor(log2(n+1)) */ def rightspine() : list[a] /** * o(log(n)) * @return wblheap heap , heap h */ def merge[b >: a](h: wblheap[b]) : wblheap[b] case object emptyheap extends wblheap[nothing] { def weight(): int = 0 def isweightedleftist(): boolean = true def rightspine() : list[nothing] = list() def merge[b >: nothing](h: wblheap[b]) : wblheap[b] = h } case class node[a](elem: a, weightnode: int, left: wblheap[a], right: wblheap[a]) extends wblheap[a] { def weight(): int = weightnode def isweightedleftist(): boolean = left.weight >= right.weight && left.isweightedleftist() && right.isweightedleftist() def rightspine() : list[a] = elem :: right.rightspine() def merge[b >: a](h: wblheap[b]) : wblheap[b] = h match { case emptyheap => case node(e, w, l: wblheap[b], r: wblheap[b]) if this.weightnode <= w => buildnode(elem, left, r.merge(h) ) case node(e: b, w, l: wblheap[b], r: wblheap[b]) if this.weightnode > w => buildnode(e, l, this.merge(r)) //there warning here don't know why. //abstract type pattern unchecked since eliminated erasure } private def buildnode[b >: a](x: b, h1: wblheap[b], h2: wblheap[b]): wblheap[b] = { val w1 = h1.weight() val w2 = h2.weight() val newweight = w1 + w2 + 1 if(w1 >= w2) return new node[b](x, newweight, h1, h2) else return new node[b](x, newweight, h2, h1) } } } driver.scala
package heaps object driver { def main(args:array[string]) = { val h = new node[char]('b', 2, new node[char]('c', 1, emptyheap(), emptyheap()), emptyheap()) } } in line: "val h = new node[char]('b', 2, ", have error: not found: type node. happens everytime use object emptyheap.
does know doing wrong?
thank you!
either move node definition out of abstract class wblheap, change abstract class wblheap object, or add extends wblheap[...] driver, node becomes accessible.
Comments
Post a Comment