The basis of all Haskell love-hate relationships

Depends on what you think about this snippet of code:1

let square y = y * y; limit = 100 in [(x, y, z) | y <- [1..limit], x <- [1..y], z <- [1..limit],  square x + square y == square z]


  1. It finds all the right triangles with integer sides smaller than limit without duplicates. If you want the version with duplicates, just use x <- [1..limit] [return]