public async Task <Value> Visit <A>(IProjL <A> expression) where A : Expression { // idea here is to extract the PairValue then return its left entry. var value = await expression.Expression.Accept(this); if (value is PotentialPairValue <Value, Value> ) { return(await(value as PotentialPairValue <Value, Value>).Left); } else { throw new ArgumentException("Not a pair value"); } }
public Expression Visit <A>(IProjL <A> pair) where A : Expression { var expr = (AbstractPairExpression)pair.Expression.Accept(this); return(pair.Construct(expr)); }
public SortedSet <string> Visit <A>(IProjL <A> expression) where A : Expression { return(Run(expression.Expression)); }
public T Visit <A>(IProjL <A> expression) where A : Expression { expression.Expression.Accept(this); return(default(T)); }