- the recursion call moves toward the smaller, reducing the distance between start point and end point.

    en5nFromTo 1 3 
=
    1: en5nFromTo 2 3 
=
    1 : (2 : en5nFromTo 3 3) 
= 
    1: (2 : (3 : en5nFromTo 4 3)
= 
    1 : (2 : (3 [])) 
= 
    [1,2,3] 
-}
factorial n = product [1..] 
factorial n = product [1..]
factorial n = product [1..]