AjErl.Language.List.Equals C# (CSharp) Method

Equals() public method

public Equals ( object obj ) : bool
obj object
return bool
        public override bool Equals(object obj)
        {
            if (obj == null)
                return false;

            if (!(obj is List))
                return false;

            var list0 = this;
            var list = (List)obj;

            while (true)
            {
                if (list == null)
                    return false;

                if (!Machine.AreEqual(list0.Head, list.Head))
                    return false;

                if (!(list0.Tail is List))
                    return Machine.AreEqual(list0.Tail, list.Tail);

                list0 = (List)list0.Tail;
                list = (List)list.Tail;
            }
        }