Multiplication table using a list comprehension I have just started reading through Learn you a Haskell I got up to list comprehension and started to play around in GHCi, my aim was to make a times table function that takes a number n and an upper limit upperLimit and return a nested list of all the 'tables' up to n for example

&gt; timesTable 2 12
[[1,2..12],[2,4..24]]


the actual function/list comprehension I came up with is

&gt; let timesTable n upperLimit = [[(n-y) * x | x &lt;- [1..upperLimit]] | y &lt;- reverse [0..(n-1)]]


Any feedback on the above would be greatly appreciated as this is the first time I have really used a functional language, so if there is a better way or something I have missed please let me know.
Your function could be simplified a little, and I find it helpful to define functions using declarations, since type signatures are really helpful (although admittedly your example is simple enough that it doesn't matter):

timesTable :: Int -&gt; Int -&gt; [[Int]]
timesTable n u = [[y * x | x &lt;- [1 .. u]] | y &lt;- [1 .. n]]


The key thing I noticed was that you were using n-y: it should be obvious that this part of the expression becomes the following values in each iteration of y: [n-(n-1), n-(n-2), ... n-0], which is just [1 .. n].