]> gitweb.factorcode.org Git - factor.git/commitdiff
Separate lazy lists from core primes number generation
authorSamuel Tardieu <sam@rfc1149.net>
Wed, 7 Jan 2009 19:57:49 +0000 (20:57 +0100)
committerSamuel Tardieu <sam@rfc1149.net>
Wed, 7 Jan 2009 20:10:34 +0000 (21:10 +0100)
extra/math/primes/factors/factors.factor
extra/math/primes/lists/authors.txt [new file with mode: 0644]
extra/math/primes/lists/lists-docs.factor [new file with mode: 0644]
extra/math/primes/lists/lists-tests.factor [new file with mode: 0644]
extra/math/primes/lists/lists.factor [new file with mode: 0644]
extra/math/primes/lists/summary.txt [new file with mode: 0644]
extra/math/primes/primes-docs.factor
extra/math/primes/primes-tests.factor
extra/math/primes/primes.factor
extra/project-euler/007/007.factor
extra/project-euler/134/134.factor

index 282c46c82e95e7b4495008b0040add8de959ae84..8e227572492bbbe843d3ff62222dc41467f4d625 100644 (file)
@@ -1,6 +1,6 @@
 ! Copyright (C) 2007-2009 Samuel Tardieu.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: arrays kernel lists make math math.primes sequences ;
+USING: arrays kernel lists make math math.primes.lists sequences ;
 IN: math.primes.factors
 
 <PRIVATE
diff --git a/extra/math/primes/lists/authors.txt b/extra/math/primes/lists/authors.txt
new file mode 100644 (file)
index 0000000..f3b0233
--- /dev/null
@@ -0,0 +1 @@
+Samuel Tardieu
diff --git a/extra/math/primes/lists/lists-docs.factor b/extra/math/primes/lists/lists-docs.factor
new file mode 100644 (file)
index 0000000..ecab12c
--- /dev/null
@@ -0,0 +1,10 @@
+USING: help.markup help.syntax ;
+IN: math.primes.lists
+
+HELP: lprimes
+{ $values { "list" "a lazy list" } }
+{ $description "Return a sorted list containing all the prime numbers." } ;
+
+HELP: lprimes-from
+{ $values { "n" "an integer" } { "list" "a lazy list" } }
+{ $description "Return a sorted list containing all the prime numbers greater or equal to " { $snippet "n" } "." } ;
diff --git a/extra/math/primes/lists/lists-tests.factor b/extra/math/primes/lists/lists-tests.factor
new file mode 100644 (file)
index 0000000..3bd7d70
--- /dev/null
@@ -0,0 +1,6 @@
+USING: lists.lazy math.primes.lists tools.test ;
+
+{ { 2 3 5 7 11 13 17 19 23 29 } } [ 10 lprimes ltake list>array ] unit-test
+{ { 101 103 107 109 113 } } [ 5 100 lprimes-from ltake list>array ] unit-test
+{ { 1000117 1000121 } } [ 2 1000100 lprimes-from ltake list>array ] unit-test
+{ { 999983 1000003 } } [ 2 999982 lprimes-from ltake list>array ] unit-test
diff --git a/extra/math/primes/lists/lists.factor b/extra/math/primes/lists/lists.factor
new file mode 100644 (file)
index 0000000..13f314f
--- /dev/null
@@ -0,0 +1,9 @@
+! Copyright (C) 2007-2009 Samuel Tardieu.
+! See http://factorcode.org/license.txt for BSD license.
+USING: kernel lists.lazy math math.primes ;
+IN: math.primes.lists
+
+: lprimes ( -- list ) 2 [ next-prime ] lfrom-by ;
+
+: lprimes-from ( n -- list )
+    dup 3 < [ drop lprimes ] [ 1- next-prime [ next-prime ] lfrom-by ] if ;
diff --git a/extra/math/primes/lists/summary.txt b/extra/math/primes/lists/summary.txt
new file mode 100644 (file)
index 0000000..39a780a
--- /dev/null
@@ -0,0 +1 @@
+Infinite stream of prime numbers through lazy lists
index 516b081624eb5c1135d3f8a604c872de559e6c53..c7dbc950e855217d2d864226c362620574ccd950 100644 (file)
@@ -11,15 +11,7 @@ HELP: prime?
 { $values { "n" "an integer" } { "?" "a boolean" } }
 { $description "Test if an integer is a prime number." } ;
 
-{ lprimes lprimes-from primes-upto primes-between } related-words
-
-HELP: lprimes
-{ $values { "list" "a lazy list" } }
-{ $description "Return a sorted list containing all the prime numbers." } ;
-
-HELP: lprimes-from
-{ $values { "n" "an integer" } { "list" "a lazy list" } }
-{ $description "Return a sorted list containing all the prime numbers greater or equal to " { $snippet "n" } "." } ;
+{ primes-upto primes-between } related-words
 
 HELP: primes-upto
 { $values { "n" "an integer" } { "seq" "a sequence" } }
index b0b25285c0acab325780dd0af339631b5e91a523..db738399ef828ab6a49f207c028eb39c4be536b2 100644 (file)
@@ -1,14 +1,9 @@
-USING: arrays math.primes tools.test lists.lazy ;
+USING: arrays math.primes tools.test ;
 
 { 1237 } [ 1234 next-prime ] unit-test
 { f t } [ 1234 prime? 1237 prime? ] unit-test
-{ { 2 3 5 7 11 13 17 19 23 29 } } [ 10 lprimes ltake list>array ] unit-test
-{ { 101 103 107 109 113 } } [ 5 100 lprimes-from ltake list>array ] unit-test
-{ { 1000117 1000121 } } [ 2 1000100 lprimes-from ltake list>array ] unit-test
-{ { 999983 1000003 } } [ 2 999982 lprimes-from ltake list>array ] unit-test
 { { 2 3 5 7 } } [ 10 primes-upto >array ] unit-test
 { { 999983 1000003 } } [ 999982 1000010 primes-between >array ] unit-test
 
 { { 4999963 4999999 5000011 5000077 5000081 } }
-[ 4999962 5000082 primes-between >array ]
-unit-test
+[ 4999962 5000082 primes-between >array ] unit-test
index fa42d7385a54a855aee0ecf064f0af72b2f61dd2..807ebf097b4b66a8aaa844b520130d0ad1c94e66 100644 (file)
@@ -1,7 +1,7 @@
-! Copyright (C) 2007 Samuel Tardieu.
+! Copyright (C) 2007-2009 Samuel Tardieu.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: combinators kernel lists.lazy math math.functions
-math.miller-rabin math.order math.primes.erato math.ranges sequences ;
+USING: combinators kernel math math.functions math.miller-rabin
+math.order math.primes.erato math.ranges sequences ;
 IN: math.primes
 
 <PRIVATE
@@ -23,11 +23,6 @@ PRIVATE>
 : next-prime ( n -- p )
     next-odd [ dup really-prime? ] [ 2 + ] [ ] until ; foldable
 
-: lprimes ( -- list ) 2 [ next-prime ] lfrom-by ;
-
-: lprimes-from ( n -- list )
-    dup 3 < [ drop lprimes ] [ 1- next-prime [ next-prime ] lfrom-by ] if ;
-
 : primes-between ( low high -- seq )
     [ dup 3 max dup even? [ 1 + ] when ] dip
     2 <range> [ prime? ] filter
index f2b659fe94d32f9e21cc7a35526c519f03f9347e..f40108e4d7105ff2b98453d4a07c2ba7da61f978 100644 (file)
@@ -1,6 +1,6 @@
 ! Copyright (c) 2007 Aaron Schaefer.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: lists math math.primes ;
+USING: lists math math.primes.lists ;
 IN: project-euler.007
 
 ! http://projecteuler.net/index.php?section=problems&id=7
index 7bdf17ef684260c36cc65e0d64f5feac11811aff..e00e86865d9a1a99d2b4a863a3615b7d9d6b57b3 100644 (file)
@@ -1,7 +1,7 @@
 ! Copyright (c) 2007 Samuel Tardieu.
 ! See http://factorcode.org/license.txt for BSD license.
 USING: arrays kernel lists lists.lazy math.algebra math math.functions
-    math.order math.primes math.ranges project-euler.common sequences ;
+    math.order math.primes.lists math.ranges project-euler.common sequences ;
 IN: project-euler.134
 
 ! http://projecteuler.net/index.php?section=problems&id=134