public override bool EvalStep(out object answer, ref Control expression, ref Environment environment) { #if DEBUG Warm("POrIsSymbolS"); #endif object ev0; if (environment.StaticValue(out ev0, this.rand0Name, this.rand0Offset)) { throw new NotImplementedException(); } Symbol ev0sym = ev0 as Symbol; if (ev0sym != null && ev0sym.IsInterned()) { answer = Constant.sharpT; return(false); } else { #if DEBUG NoteCalls(this.alternative); alternativeTypeHistogram.Note(this.alternativeType); #endif answer = null; expression = this.alternative; return(true); } }
public override bool EvalStep(out object answer, ref Control expression, ref Environment environment) { #if DEBUG Warm("POrIsSymbol"); NoteCalls(this.arg0); arg0TypeHistogram.Note(this.arg0Type); #endif Control unev0 = this.arg0; Environment env = environment; object ev0; while (unev0.EvalStep(out ev0, ref unev0, ref env)) { } ; if (ev0 == Interpreter.UnwindStack) { throw new NotImplementedException(); //((UnwinderState) env).AddFrame (new PrimitiveCombination1Frame0 (this, closureEnvironment)); //answer = Interpreter.Unwind; //closureEnvironment = env; //return false; } Symbol ev0sym = ev0 as Symbol; if (ev0sym != null && ev0sym.IsInterned()) { answer = Constant.sharpT; return(false); } else { #if DEBUG NoteCalls(this.alternative); alternativeTypeHistogram.Note(this.alternativeType); #endif answer = null; expression = this.alternative; return(true); } }
public override bool EvalStep(out object answer, ref Control expression, ref Environment environment) { #if DEBUG Warm("POrIsSymbolA0"); #endif Symbol ev0sym = environment.Argument0Value as Symbol; if (ev0sym != null && ev0sym.IsInterned()) { answer = Constant.sharpT; return(false); } else { #if DEBUG NoteCalls(this.alternative); alternativeTypeHistogram.Note(this.alternativeType); #endif answer = null; expression = this.alternative; return(true); } }
public static bool IsSameType(out object answer, object arg0, object arg1) { if (arg0 == null) { answer = (arg1 == null) ? Constant.sharpT : Constant.sharpF; } else if (arg1 == null) { answer = Constant.sharpF; } else if (arg0 is bool) { answer = (arg1 is bool) ? Constant.sharpT : Constant.sharpF; } else if (arg0 is char) { answer = (arg1 is char) ? Constant.sharpT : Constant.sharpF; } else if (arg0 is int) { answer = (arg1 is int) ? Constant.sharpT : Constant.sharpF; } else if (arg0 is char []) { answer = (arg1 is char []) ? Constant.sharpT : Constant.sharpF; } else { SchemeObject l = arg0 as SchemeObject; if (l == null) { throw new NotImplementedException(); } SchemeObject r = arg1 as SchemeObject; if (r == null) { answer = Constant.sharpF; } else { Symbol ls = l as Symbol; if (ls == null) { if (r is Symbol) { answer = Constant.sharpF; } else { answer = (l.TypeCode == r.TypeCode) ? Constant.sharpT : Constant.sharpF; } } else { Symbol rs = r as Symbol; if (rs == null) { answer = Constant.sharpF; } else if (ls.IsInterned()) { answer = rs.IsInterned() ? Constant.sharpT : Constant.sharpF; } else { answer = rs.IsInterned() ? Constant.sharpF : Constant.sharpT; } } } } return(false); }