Така че получих нещо подобно:
abstract class Term
case class App(f:Term,x:Term) extends Term
case class Var(s:String) extends Term
case class Amb(a:Term, b:Term) extends Term //ambiguity
И един термин може да изглежда така:
App(Var(f),Amb(Var(x),Amb(Var(y),Var(z))))
Така че това, от което се нуждая, са всички варианти, които са посочени от класа Amb. Това се използва за представяне на двусмислена гора за анализ и искам да напиша проверка на всеки възможен вариант и да избера правилния. В този пример ще ми трябва:
App(Var(f),Var(x))
App(Var(f),Var(y))
App(Var(f),Var(z))
Кой е най-добрият начин за създаване на тези вариации в scala? Ефективността би била добра, но всъщност не е изискване. Ако е възможно, обичам да се въздържам от използването на отражение.
Amb
, след като сте изпълнили тази операция). Ето бърза скица на това как може да изглежда това. - person Travis Brown   schedule 26.09.2013