- *Jan22MoreRec> quickCheck prop_sum
Loading package array-0.4.0.1 ... linking ... done.
Loading package deepseq-1.3.0.1 ... linking ... done.
Loading package bytestring-0.10.0.2 ... linking ... done.
Loading package Win32-2.3.0.0 ... linking ... done.
Loading package old-locale-1.0.0.5 ... linking ... done.
Loading package time-1.4.0.1 ... linking ... done.
Loading package random-1.0.1.1 ... linking ... done.
Loading package containers-0.5.0.0 ... linking ... done.
Loading package pretty-1.1.1.0 ... linking ... done. 
Loading package template-haskell ... linking ... done.
Loading package QuickCheck-2.6 ... linking ... done.
-} 
-- Associativity Left vs Right 
-- (x*x)*x) vs (x*(x*x) 
--
-- SEQUENTIAL takes 7 steps which mean m lists it takes m - 1 steps
--      xs1 +  (xs2 + (xs3 + (xs4 + (xs5 + (xs6 + (xs7 + xs8))))))
--
-- PARALLEL  takes 3 steps  
--      ((xs1 + xs2) + (xs3 + xs4)) +  ((xs5 + xs6) + (xs7 + xs8))
-- 
-- if we have m lists it takes log2m steps 
-- when m = 1000 sequential  takes a hundred times longer than parallel 
--}

en5nFromTo m n  | m > n     = [] 
                | m <= n    = m : en5nFromTo (m+1) n 
en5nFromTo m n  | m > n     = [] 
                | m <= n    = m : en5nFromTo (m+1) n
en5nFromTo m n  | m > n     = [] 
                | m <= n    = m : en5nFromTo (m+1) n