From e41f1338c6d807fe2f31c9579d75258cf3a56f2d Mon Sep 17 00:00:00 2001 From: James Cash Date: Sun, 8 Jun 2008 21:12:15 -0400 Subject: [PATCH] Adding lappend --- extra/lists/lists-tests.factor | 4 ++++ extra/lists/lists.factor | 5 ++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/extra/lists/lists-tests.factor b/extra/lists/lists-tests.factor index cdc51b76e8..4a08a4d1e3 100644 --- a/extra/lists/lists-tests.factor +++ b/extra/lists/lists-tests.factor @@ -63,4 +63,8 @@ IN: lists.tests { { 3 4 { 5 6 { 7 } } } } [ { 1 2 { 3 4 { 5 } } } seq>cons [ atom? ] [ 2 + ] traverse cons>seq +] unit-test + +{ { 1 2 3 4 5 6 } } [ + { 1 2 3 } seq>list { 4 5 6 } seq>list lappend list>seq ] unit-test \ No newline at end of file diff --git a/extra/lists/lists.factor b/extra/lists/lists.factor index 13d77f757a..613d75c4ae 100644 --- a/extra/lists/lists.factor +++ b/extra/lists/lists.factor @@ -1,4 +1,4 @@ -! Copyright (C) 2008 Chris Double & James Cash +! Copyright (C) 2008 James Cash ! See http://factorcode.org/license.txt for BSD license. USING: kernel sequences accessors math arrays vectors classes words locals ; @@ -75,6 +75,9 @@ M: object nil? drop f ; : lreverse ( list -- newlist ) nil [ swap cons ] foldl ; +: lappend ( list1 list2 -- newlist ) + [ lreverse ] dip [ swap cons ] foldl ; + : seq>list ( seq -- list ) nil [ swap cons ] reduce ;