Skip to content
Snippets Groups Projects
Commit 5325bc8b authored by Manos Koukoutos's avatar Manos Koukoutos
Browse files

QEB.flatMapIns should still return EB

parent d37168e0
No related branches found
No related tags found
No related merge requests found
...@@ -185,16 +185,16 @@ case class QualifiedExamplesBank(as: List[Identifier], xs: List[Identifier], eb: ...@@ -185,16 +185,16 @@ case class QualifiedExamplesBank(as: List[Identifier], xs: List[Identifier], eb:
QualifiedExamplesBank(nas, xs, eb flatMapIns { (in: Seq[Expr]) => List(toKeep.map(in)) }) QualifiedExamplesBank(nas, xs, eb flatMapIns { (in: Seq[Expr]) => List(toKeep.map(in)) })
} }
def evalIns: QualifiedExamplesBank = copy( eb = flatMapIns { mapping =>
val evalAs = evaluator.evalEnv(mapping)
List(as map evalAs)
})
/** Filter inputs through expr which is an expression evaluating to a boolean */ /** Filter inputs through expr which is an expression evaluating to a boolean */
def filterIns(expr: Expr): QualifiedExamplesBank = { def filterIns(expr: Expr): QualifiedExamplesBank = {
filterIns(m => evaluator.eval(expr, m).result.contains(BooleanLiteral(true))) filterIns(m => evaluator.eval(expr, m).result.contains(BooleanLiteral(true)))
} }
def evalIns: QualifiedExamplesBank = flatMapIns { mapping =>
val evalAs = evaluator.evalEnv(mapping)
List(as map evalAs)
}
/** Filters inputs through the predicate pred, with an assignment of input variables to expressions. */ /** Filters inputs through the predicate pred, with an assignment of input variables to expressions. */
def filterIns(pred: Map[Identifier, Expr] => Boolean): QualifiedExamplesBank = { def filterIns(pred: Map[Identifier, Expr] => Boolean): QualifiedExamplesBank = {
QualifiedExamplesBank(as, xs, QualifiedExamplesBank(as, xs,
...@@ -212,14 +212,14 @@ case class QualifiedExamplesBank(as: List[Identifier], xs: List[Identifier], eb: ...@@ -212,14 +212,14 @@ case class QualifiedExamplesBank(as: List[Identifier], xs: List[Identifier], eb:
/** Maps inputs through the function f /** Maps inputs through the function f
* *
* @return A new ExampleBank */ * @return A new ExampleBank */
def flatMapIns(f: Seq[(Identifier, Expr)] => List[Seq[Expr]]): QualifiedExamplesBank = { def flatMapIns(f: Seq[(Identifier, Expr)] => List[Seq[Expr]]): ExamplesBank = {
copy(eb = eb flatMap { eb flatMap {
case InExample(in) => case InExample(in) =>
f(as zip in).map(InExample) f(as zip in).map(InExample)
case InOutExample(in, out) => case InOutExample(in, out) =>
f(as zip in).map(InOutExample(_, out)) f(as zip in).map(InOutExample(_, out))
}) }
} }
} }
......
...@@ -100,7 +100,7 @@ case object ADTSplit extends Rule("ADT Split.") { ...@@ -100,7 +100,7 @@ case object ADTSplit extends Rule("ADT Split.") {
} }
} }
} else { } else {
p.qeb p.eb
} }
} }
val newAs = if (isInputVar) args ::: oas else p.as val newAs = if (isInputVar) args ::: oas else p.as
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment