Advertisement
Guest User

Untitled

a guest
Apr 28th, 2015
206
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scala 0.80 KB | None | 0 0
  1.   def evalChained(expr: Expr, references: Map[String, Signal[Expr]], seen: Set[String]): Double = {
  2.     expr match {
  3.       case Literal(v) => v
  4.       case Ref(name) => references.contains(name) match {
  5.         case true => seen.contains(name) match {
  6.           case false => evalChained(references(name)(), references, seen + name)
  7.           case true => Double.NaN
  8.         }
  9.         case false => Double.NaN
  10.       }
  11.       case Plus(a, b) => evalChained(a, references, seen) + evalChained(b, references, seen)
  12.       case Minus(a, b) => evalChained(a, references, seen) - evalChained(b, references, seen)
  13.       case Times(a, b) => evalChained(a, references, seen) * evalChained(b, references, seen)
  14.       case Divide(a, b) => evalChained(a, references, seen) / evalChained(b, references, seen)
  15.     }
  16.   }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement