
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
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