예제 #1
0
파일: Object.cs 프로젝트: toshok/shelisp
        public static Shelisp.Object Feq(L l, Shelisp.Object o1, Shelisp.Object o2)
        {
            if (L.NILP(o1))
                return L.NILP(o2) ? L.Qt : L.Qnil;

            return o1.LispEq (o2) ? L.Qt : L.Qnil;
        }
예제 #2
0
파일: Shunit.cs 프로젝트: toshok/shelisp
 public static AssertResult Eq(Shelisp.Object o1, Shelisp.Object o2, string description = null)
 {
     try {
         return (!o1.LispEq (o2)) ? Fail(description) : Succeed(description);
     }
     catch (Exception e) {
         return FailException (e, description);
     }
 }
예제 #3
0
파일: List.cs 프로젝트: toshok/shelisp
        public static Shelisp.Object Memq(Shelisp.Object obj, Shelisp.Object alist)
        {
            Shelisp.Object tail = alist;

            do {
                if (obj.LispEq (L.CAR(tail)))
                    return tail;
                tail = L.CDR(tail);
            } while (L.CONSP (tail));

            return L.Qnil;
        }
예제 #4
0
파일: List.cs 프로젝트: toshok/shelisp
        public static Shelisp.Object Frassq(L l, Shelisp.Object key, Shelisp.Object alist)
        {
            if (!L.CONSP(alist))
                return L.Qnil;
            //throw new WrongTypeArgumentException ("listp", alist);

            foreach (var el in L.CONS(alist)) {
                if (!L.LISTP(el))
                    continue;
                if (L.NILP(el))
                    break;
                var cdr = L.CDR(el);
                if (key.LispEq (cdr))
                    return el;
            }
            return L.Qnil;
        }
예제 #5
0
파일: Hash.cs 프로젝트: toshok/shelisp
 private static bool compare_eq(Shelisp.Object obj1, Shelisp.Object obj2, long hash1, long hash2)
 {
     return obj1.LispEq (obj2);
 }
예제 #6
0
파일: Shunit.cs 프로젝트: toshok/shelisp
 public static AssertResult NotEq(Shelisp.Object o1, Shelisp.Object o2, string description = null)
 {
     return (o1.LispEq (o2)) ? Fail(description) : Succeed(description);
 }