Hola, tengo una duda de este ejercicio (Haskell Platform v8.4.3, la 8.0.2 daba ciertos problemas en windows). Su archivo de perfil básico de memoria (.conf), me da:
COST CENTRE MODULE SRC no. entries %time %alloc %time %alloc
MAIN MAIN <built-in> 41 0 0.0 0.0 100.0 100.0
CAF GHC.IO.Encoding.CodePage <entire-module> 68 0 0.4 0.0 0.4 0.0
CAF GHC.IO.Encoding <entire-module> 65 0 0.0 0.0 0.0 0.0
CAF GHC.IO.Handle.Text <entire-module> 62 0 0.0 0.0 0.0 0.0
CAF GHC.IO.Handle.FD <entire-module> 55 0 0.0 0.0 0.0 0.0
CAF Main <entire-module> 48 0 0.0 0.0 60.7 99.5
f Main Ai.hs:3:1-23 84 1 0.0 0.0 0.0 0.0
main Main Ai.hs:1:1-29 82 1 48.1 85.9 60.7 99.5
f Main Ai.hs:3:1-23 85 0 12.6 13.6 12.6 13.6
main Main Ai.hs:1:1-29 83 0 38.9 0.5 38.9 0.5
Como se ve, aparece al final otra vez la función main, esta vez consumiendo 38.9% del tiempo, pero fuera del nodo CAF. ¿Estos tiempos son por el print? ¿porque aparece dos veces? Algo parecido ocurre con la función f, pero se puede interpretar como llamada por main y llamada directamente. Esto no está en el link que aparece en las transparencias de clase.
Agrego el código original:
main = print $ f [1..1000000]
f = foldl (flip (:)) []
Gracias,
Alejandro.