public static Symbol Intern(string name) { Symbol value; if (InternedSymbols.TryGetValue(name, out value)) { return value; } value = new Symbol(name); InternedSymbols[name] = value; return value; }
public TaggedType(Symbol tag, object data) { _tag = tag; Data = data; }
public SymbolNotFoundException(Symbol s) : base(string.Format("Symbol {0} is not defined.", s.Name)) { }
public object ToplevelLookup(Symbol name) { object value; if (!_toplevelEnv.TryGetValue(name, out value)) { throw new SymbolNotFoundException(name); } return value; }
public bool ToplevelIsDefined(Symbol name) { return _toplevelEnv.ContainsKey(name); }
public void ToplevelDefine(Symbol name, object value) { _toplevelEnv[name] = value; }