Multiplication table using a list comprehension
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].