public async Task <Value> Visit <A>(IProjR <A> expression) where A : Expression { var value = await expression.Expression.Accept(this); if (value is PotentialPairValue <Value, Value> ) { return(await(value as PotentialPairValue <Value, Value>).Right); } else { throw new ArgumentException("Not a pair value"); } }
public Expression Visit <A>(IProjR <A> pair) where A : Expression { var expr = (AbstractPairExpression)pair.Expression.Accept(this); return(pair.Construct(expr)); }
public SortedSet <string> Visit <A>(IProjR <A> expression) where A : Expression { return(Run(expression.Expression)); }
public T Visit <A>(IProjR <A> expression) where A : Expression { expression.Expression.Accept(this); return(default(T)); }