/// <summary>
/// Interface for all expressions (objects
/// that evaluate to a Value).
/// </summary>
public interface IExpression
{
Value Evaluate(Dictionary<string, Value> env);
}
/// <summary>
/// Base class for all Value types (types that
/// evaluate to self)
/// </summary>
public abstract class Value : IExpression
{
public Value Evaluate(Dictionary<string, Value> env)
{
return this;
}
}