I am having problems with this code. It must be an OperationTree with BinaryOperations and UnaryOperations elements. The eval method evaluates and looks at the variables on the map.
Here is the code
1 import collection.immutable.HashMap 2 sealed abstract class OpTree[T]{ 3 4 def eval(v:HashMap[Char,T]):T = { 5 case Elem(x) => x 6 case UnOp(f,c) => { 7 f(c.eval(v)) 8 } 9 case BinOp(f,l,r) => { 10 f(l.eval(v),r.eval(v)) 11 } 12 case Var(c) => { 13 v.get(c) 14 } 15 } 16 } 17 //Leaf 18 case class Elem[T](elm:T) extends OpTree[T] 19 //Node with two sons 20 case class UnOp[T](f:T => T, child:OpTree[T]) extends OpTree[T] 21 //Node with one son 22 case class BinOp[T](f:(T,T) => T, left:OpTree[T], right:OpTree[T]) extends OpTree[T] 23 case class Var[T](val c:Char) extends OpTree[T]
The compiler says:
OpTree.scala:4: error: missing parameter type for expanded function The argument types of an anonymous function must be fully known. (SLS 8.5) Expected type was: T def eval(v:HashMap[Char,T]):T = { ^ one error found
Any suggestions
Thanks!
scala anonymous-function scala-collections
xyz
source share