From 7aeae251bce58ac78b36509fa3b61fee7c790654 Mon Sep 17 00:00:00 2001 From: John Benediktsson Date: Wed, 26 Sep 2012 18:07:53 -0700 Subject: [PATCH] sequences.zipped: adding zip virtual sequence. --- extra/sequences/zipped/authors.txt | 1 + extra/sequences/zipped/summary.txt | 1 + extra/sequences/zipped/zipped-tests.factor | 7 +++++++ extra/sequences/zipped/zipped.factor | 19 +++++++++++++++++++ 4 files changed, 28 insertions(+) create mode 100644 extra/sequences/zipped/authors.txt create mode 100644 extra/sequences/zipped/summary.txt create mode 100644 extra/sequences/zipped/zipped-tests.factor create mode 100644 extra/sequences/zipped/zipped.factor diff --git a/extra/sequences/zipped/authors.txt b/extra/sequences/zipped/authors.txt new file mode 100644 index 0000000000..e091bb8164 --- /dev/null +++ b/extra/sequences/zipped/authors.txt @@ -0,0 +1 @@ +John Benediktsson diff --git a/extra/sequences/zipped/summary.txt b/extra/sequences/zipped/summary.txt new file mode 100644 index 0000000000..b54f1094a1 --- /dev/null +++ b/extra/sequences/zipped/summary.txt @@ -0,0 +1 @@ +Virtual "zip" sequences diff --git a/extra/sequences/zipped/zipped-tests.factor b/extra/sequences/zipped/zipped-tests.factor new file mode 100644 index 0000000000..0bc45cffd7 --- /dev/null +++ b/extra/sequences/zipped/zipped-tests.factor @@ -0,0 +1,7 @@ +! Copyright (C) 2012 John Benediktsson +! See http://factorcode.org/license.txt for BSD license +USING: arrays tools.test ; +IN: sequences.zipped + +{ { { 1 4 } { 2 5 } { 3 6 } } } +[ { 1 2 3 } { 4 5 6 } >array ] unit-test diff --git a/extra/sequences/zipped/zipped.factor b/extra/sequences/zipped/zipped.factor new file mode 100644 index 0000000000..beddefba9a --- /dev/null +++ b/extra/sequences/zipped/zipped.factor @@ -0,0 +1,19 @@ +! Copyright (C) 2012 John Benediktsson +! See http://factorcode.org/license.txt for BSD license +USING: accessors arrays kernel math sequences +sequences.private ; +IN: sequences.zipped + +TUPLE: zipped +{ keys sequence read-only } +{ values sequence read-only } ; + +C: zipped + +M: zipped length + [ keys>> ] [ values>> ] bi min-length ; + +M: zipped nth-unsafe + [ keys>> nth-unsafe ] [ values>> nth-unsafe ] 2bi 2array ; + +INSTANCE: zipped immutable-sequence