public override Value Evaluate() { PseudoRecursion pseudoRecursion; if (Regions.VariableExists(name)) { var value = Regions[name]; if (value is not PseudoRecursion recursion) { pseudoRecursion = new PseudoRecursion(name); Regions[name] = pseudoRecursion; } else { pseudoRecursion = recursion; } }
public override Value Evaluate() { PseudoRecursion pseudoRecursion; if (Regions.VariableExists(name)) { var value = Regions[name]; if (!(value is PseudoRecursion)) { pseudoRecursion = new PseudoRecursion(name); Regions[name] = pseudoRecursion; } else { pseudoRecursion = (PseudoRecursion)value; } } else { pseudoRecursion = new PseudoRecursion(name); Regions.CreateVariable(name); Regions[name] = pseudoRecursion; } if (parameters.Length == 0) { pseudoRecursion.Initialization = block; } else { var parameterBlock = new ParameterBlock(parameters, block, parameters.Splatting); if (pseudoRecursion.TerminalExpression == null) { pseudoRecursion.TerminalExpression = parameterBlock; } else { pseudoRecursion.Main = parameterBlock; pseudoRecursion.Initialize(); } } result = ToString(); return(null); }