>>>>> "Scott" == Scott Brown <sukottobur...@yahoo.co.jp> writes:

Scott> I have started learning Factor and after trying out the
Scott> palindrome tutorial, I am now trying to make a simple program for
Scott> filtering out non-prime numbers from a list.

Scott> I have made a word multiple-of? which returns true if x is a
Scott> multiple of y.

Scott> : multiple-of? ( x y -- ? ) [ = not ] [ mod 0 = ] 2bi and ;

Scott> I would like to use it filter a sequence of numbers like the
Scott> expression below, but looping through each of the numbers in the
Scott> sequence to remove its multiples, leaving only prime numbers.

Scott> { 2 3 4 5 6 7 8 9 10 } [ 2 multiple-of? not ] filter

Scott> Is there some loop or combinator that I could use to do this in
Scott> Factor?

You can apply the filtering process with every number instead of just
2 by using `curry'. This word lets you "insert" an element into a
quotation.

For example,

  2 [ multiple-of? not ] curry

is equivalent to

  [ 2 multiple-of? not ]

This way, you can build the quotation to give to filter for every number
in the list by iterating with "each":

  { 2 3 4 5 6 7 8 9 10 } dup [ [ multiple-of? not ] curry filter ] each

You can check that it works as expected by using a longer list, from 2
to 50 for example:

  USE: math.ranges
  2 50 [a,b] dup [ [ multiple-of? not ] curry filter ] each

=> V{ 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 }

As a side note, you can obtain prime numbers more easily:

  USE: math.primes
  50 primes-upto

=> V{ 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 }

 Sam
-- 
Samuel Tardieu -- s...@rfc1149.net -- http://www.rfc1149.net/


------------------------------------------------------------------------------
Come build with us! The BlackBerry&reg; Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay 
ahead of the curve. Join us from November 9&#45;12, 2009. Register now&#33;
http://p.sf.net/sfu/devconf
_______________________________________________
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk

Reply via email to