diff --git a/mes.c b/mes.c index aaa3a6b7..d28c883a 100644 --- a/mes.c +++ b/mes.c @@ -665,6 +665,7 @@ SCM append (SCM x) ///((arity . n)) { if (x == cell_nil) return cell_nil; + if (cdr (x) == cell_nil) return car (x); return append2 (car (x), append (cdr (x))); } diff --git a/tests/base.test b/tests/base.test index 5f23e0af..dad6cbd2 100755 --- a/tests/base.test +++ b/tests/base.test @@ -44,6 +44,13 @@ exit $? (pass-if "if 3" (seq? (if (seq? 0 '0) 'true 'false) 'true)) (pass-if "if 4" (seq? (if (= 1 2) 'true 'false) 'false)) +(pass-if-equal "append" '(0 1) (append '(0) '(1))) +(pass-if-equal "append 1" '0 (append '() 0)) +(pass-if-equal "append 2" '(0) (append '(0) '())) +(pass-if-equal "append 3" 0 (append 0)) +(pass-if-equal "append 4" 'cons (append (cdr '(c)) (car '(cons)))) +(pass-if-equal "append 5" '(0 1 2) (append '(0) '(1) '(2))) + ;;(pass-if ">=" (seq? (>= 3 2 1) #t)) (if (defined? 'cond)