示例#1
0
 public override int GetHashCode()
 {
     unchecked
     {
         return((first.GetHashCode() * 397) ^ second.GetHashCode());
     }
 }
示例#2
0
文件: sharpf.cs 项目: jleen/sharpf
 // I thought of doing Format as a virtual method of Datum, but I
 // prefer to keep all the formatting bundled up here.
 public static string Format(Datum a)
 {
     if (a == null)
     {
         return "()";
     }
     else if (a is Symbol)
     {
         return (a as Symbol).name;
     }
     else if (a is Rational)
     {
         Rational r = (Rational)a;
         return r.ToString();
     }
     else if (a is Boolean)
     {
         if ((a as Boolean).val == true)
             return "#t";
         else
             return "#f";
     }
     else if (a is Pair)
     {
         StringBuilder fmt = new StringBuilder("(");
         while (a is Pair)
         {
             Pair p = a as Pair;
             fmt.Append(Format(p.car));
             if (p.cdr != null)
                 fmt.Append(" ");
             a = p.cdr;
         }
         if (a != null)
         {
             fmt.Append(". ");
             fmt.Append(Format(a));
         }
         fmt.Append(")");
         return fmt.ToString();
     }
     else if (a is Primitive)
     {
         return "#<primitive " + (a as Primitive).name + ">";
     }
     else if (a is Closure)
     {
         Closure c = a as Closure;
         return "#<closure " + Format(c.formals) +
             " " + Format(c.body) + ">";
     }
     else if (a is Continuation)
     {
         return "#<continuation " + a.GetHashCode() + ">";
     }
     else if (a is Unspecified)
     {
         return "#<unspecified>";
     }
     else if (a is SharpF.String)
     {
         return "\"" + (a as SharpF.String).val + "\"";
     }
     else
     {
         return "#<unprintable: " + a.ToString() + ">";
     }
 }
示例#3
0
 public override int GetHashCode()
 {
     return(Datum.GetHashCode() ^ Version.GetHashCode());
 }