You can't write
[1..] * [1..]
Since Haskell's lists aren't Nums
Instead you'd want to write something like
a<-[1..], b<-[1..], and then multiply them together manually.
But this still doesn't really work since it'll loop forever without finding any solutions. Haskell's list comprehensions don't play very nicely with multiple infinite lists. If you really want to use this style of programming for your problem, have a look at the logict package on Hackage, it has functions designed to solve the problem of multiple infinite choices.