diff --git a/seq-test.scm b/seq-test.scm index 08f48506..44ae43ba 100644 --- a/seq-test.scm +++ b/seq-test.scm @@ -21,14 +21,74 @@ return result; ") +(write (insert 'a '(c d b a a a a))) (newline) +(write (insert 'a '(c d b a a a a))) (newline) +(write (insert 'a '())) (newline) +(write (insert 'a '(b c))) (newline) +(write (insert 'a '(a b c))) (newline) + (define (insert sym S) (if (not (pair? S)) (list sym) (cond ((eq? sym (car S)) S) ((symbolfn)(data,&local_7350, sym_731_7312, Cyc_car(data, S_732_7313))) ){ + //pair_type local_7356; + //return_closcall1(data, k_7318, set_pair_as_expr(&local_7356, sym_731_7312, S_732_7313)); + pair_type* local_7356 = alloca(sizeof(pair_type)); + set_pair(local_7356, sym_731_7312, S_732_7313); + result = local_7356; + break; + } else { + pair_type *p = alloca(sizeof(pair_type)); + set_pair(p, Cyc_car(data, S_732_7313), NULL); + if (acc == NULL) { + acc = p; + acc_tail = acc; + } else { + cdr(acc_tail) = p; + acc_tail = p; + } + S_732_7313 = Cyc_cdr(data, S_732_7313); + continue; + } + } + } else { + //pair_type local_7363; + //return_closcall1(data, k_7318, set_cell_as_expr(&local_7363, sym_731_7312)); + pair_type *local_7363 = alloca(sizeof(pair_type)); + set_pair(local_7363, sym_731_7312, NULL); + result = local_7363; + break; + } +} + +if (acc) { + cdr(acc_tail) = result; + return_closcall1(data, k_7318, (object)acc); +} else { + return_closcall1(data, k_7318, result); +} +") + ; ;(define (union set1 set2) ; (inner-union set1 (dedupe set2))) @@ -51,11 +111,11 @@ ; ;(write (union '(a a a a b b c c c) '())) ;(write (union '(a b c) '(a a a a b b c c c) )) - -(define (union set1 set2) - ; NOTE: This should be implemented as merge for efficiency. - (if (not (pair? set1)) - set2 - (insert 'todo #;(car set1) (union (cdr set1) set2)))) - -(write (union '(a b) '(c d))) +; +;(define (union set1 set2) +; ; NOTE: This should be implemented as merge for efficiency. +; (if (not (pair? set1)) +; set2 +; (insert 'todo #;(car set1) (union (cdr set1) set2)))) +; +;(write (union '(a b) '(c d)))