Recientemente he aprendido a aprenderme un haskell y lo he estado pasando muy bien. He estado trabajando en algunos problemas de Project Euler para comprender la sintaxis y he estado revisando las soluciones publicadas aquí http://www.haskell.org/haskellwiki/Euler_problems/1_to_10 como una herramienta de aprendizaje. Aunque he encontrado a mí mismo incapaz de hacerme a la solución publicado por problem #3:Haskell, entendiendo una solución para euler # 3
-- Find the largest prime factor of 317584931803.
primes = 2 : filter ((==1) . length . primeFactors) [3,5..]
primeFactors n = factor n primes
where
factor n (p:ps)
| p*p > n = [n]
| n `mod` p == 0 = p : factor (n `div` p) (p:ps)
| otherwise = factor n ps
problem_3 = last (primeFactors 317584931803)
no puedo averiguar por la vida de mí cómo funciona. primes
y primeFactors
parecen llamarse entre sí para construir sus propias listas y tratar de seguirlo me deja en blanco. ¿Alguien sabe una buena publicación en el blog sobre esta solución o quiere escribir una explicación al respecto aquí?
¿Has visto la definición recursiva de los números de Fibonacci? 'fibs = 1: 1: zipWith (+) fibs (tail fibs)'? ¿Entiendes eso? Ese es un buen lugar para comenzar con datos definidos recursivamente. – rampion