From ffc9c958675da2b270960d6f0cdd1d7d38128f82 Mon Sep 17 00:00:00 2001 From: Alexander Ilin Date: Tue, 10 May 2022 09:54:37 +0200 Subject: [PATCH] lists.circular: new vocab Closes #2607. --- extra/lists/circular/authors.txt | 1 + extra/lists/circular/circular-docs.factor | 9 +++++++++ extra/lists/circular/circular-tests.factor | 23 ++++++++++++++++++++++ extra/lists/circular/circular.factor | 8 ++++++++ extra/lists/circular/summary.txt | 1 + extra/lists/circular/tags.txt | 1 + 6 files changed, 43 insertions(+) create mode 100644 extra/lists/circular/authors.txt create mode 100644 extra/lists/circular/circular-docs.factor create mode 100644 extra/lists/circular/circular-tests.factor create mode 100644 extra/lists/circular/circular.factor create mode 100644 extra/lists/circular/summary.txt create mode 100644 extra/lists/circular/tags.txt diff --git a/extra/lists/circular/authors.txt b/extra/lists/circular/authors.txt new file mode 100644 index 0000000000..8e1955f8e1 --- /dev/null +++ b/extra/lists/circular/authors.txt @@ -0,0 +1 @@ +Alexander Ilin diff --git a/extra/lists/circular/circular-docs.factor b/extra/lists/circular/circular-docs.factor new file mode 100644 index 0000000000..2476536329 --- /dev/null +++ b/extra/lists/circular/circular-docs.factor @@ -0,0 +1,9 @@ +! Copyright (C) 2022 Alexander Ilin. +! See http://factorcode.org/license.txt for BSD license. +USING: arrays circular help.markup help.syntax lists lists.lazy ; +IN: lists.circular + +ABOUT: "lists.circular" + +ARTICLE: "lists.circular" "Circular lists" +"The " { $vocab-link "lists.circular" } " vocabulary implements virtually infinite linked lists based on the " { $link circular } " sequences. These are especially useful when used lazily (" { $vocab-link "lists.lazy" } "), see " { $link ltake } ", just don't call " { $link llength } "." ; diff --git a/extra/lists/circular/circular-tests.factor b/extra/lists/circular/circular-tests.factor new file mode 100644 index 0000000000..a85ea0b910 --- /dev/null +++ b/extra/lists/circular/circular-tests.factor @@ -0,0 +1,23 @@ +! Copyright (C) 2022 Alexander Ilin. +! See http://factorcode.org/license.txt for BSD license. +USING: circular lists lists.circular lists.lazy sequences tools.test ; + +{ { f f "Fizz" f f "Fizz" f f "Fizz" } } [ + 9 { f f "Fizz" } ltake list>array +] unit-test + +{ { f f f f "Buzz" f f f f "Buzz" f f f f "Buzz" } } [ + 15 { f f f f "Buzz" } ltake list>array +] unit-test + +{ { + "" "" "Fizz" "" "Buzz" + "Fizz" "" "" "Fizz" "Buzz" + "" "Fizz" "" "" "FizzBuzz" +} } [ + 15 + { "" "" "Fizz" } + { "" "" "" "" "Buzz" } + lzip [ first2 append ] lmap-lazy + ltake list>array +] unit-test diff --git a/extra/lists/circular/circular.factor b/extra/lists/circular/circular.factor new file mode 100644 index 0000000000..48ae7c54d1 --- /dev/null +++ b/extra/lists/circular/circular.factor @@ -0,0 +1,8 @@ +! Copyright (C) 2022 Alexander Ilin. +! See http://factorcode.org/license.txt for BSD license. +USING: circular kernel lists sequences ; +IN: lists.circular + +M: circular car 0 swap nth ; + +M: circular cdr [ rotate-circular ] keep ; diff --git a/extra/lists/circular/summary.txt b/extra/lists/circular/summary.txt new file mode 100644 index 0000000000..f4ce39a344 --- /dev/null +++ b/extra/lists/circular/summary.txt @@ -0,0 +1 @@ +Circular sequences as infinite linked lists diff --git a/extra/lists/circular/tags.txt b/extra/lists/circular/tags.txt new file mode 100644 index 0000000000..42d711b32b --- /dev/null +++ b/extra/lists/circular/tags.txt @@ -0,0 +1 @@ +collections -- 2.34.1