HI,
I have written(copied) a small piece of code which finds the lowest divisor of am integer (greater than 1)
 
the code is here
 

ld::Int->Int
ld n = ld' 2 n
       where
  ld' i n | rem n i == 0 = i
                 | i^2 > n = n
                 | otherwise = ld' (i+1) n
 
 
now it seems to work fine for small numbers but for a big number we get
 
*Main> ld 278970415063349480483707695
7
 
the number is obviously divisible by 5 , so where is the anomaly ?
 
Thanks,
Abhijit
On Wed, Dec 29, 2010 at 2:52 PM, Alex Rozenshteyn <rpglover64@gmail.com> wrote:
I'm trying to understand the technique referred to as "tying the knot", but documentation on the internet seems to be much sparser and more obtuse than I like.

So I'm asking here.

As far as I understand, "tying the knot" refers to a way of using laziness to implement something like references in a purely functional way.

I'm trying to write a toy simulation:
I have a population :: [Person]
I want to collect a random subset of possible pairs of distinct people.
So I go to each person in the population and select a subset of the people after him/her in the list; these are pairs in which s/he is the first element.

I want to then be able to ask for all pairs in which a person is the first or the second element.  I could give each person a unique id, but it seems like tying the knot is a valid way to implement this.

Please correct me if I am misunderstanding.

Thank you.

--
          Alex R


_______________________________________________
Beginners mailing list
Beginners@haskell.org
http://www.haskell.org/mailman/listinfo/beginners