A list comprehension is a special syntax in some programming languages to describe lists. It is similar to the way mathematicians describe sets, with a set comprehension, hence the name.

Some attributes of a list comprehension are:

 They should be distinct from (nested) for loops and the use of map and filter functions within the syntax of the language.
 They should return either a list or an iterator (something that returns successive members of a collection, in order).
 The syntax has parts corresponding to that of set-builder notation. 


Task

Write a list comprehension that builds the list of all Pythagorean triples with elements between   1   and   n.

If the language has multiple ways for expressing such a construct (for example, direct list comprehensions and generators), write one example for each.




functor
import
   LazyList
   Application
   System
define
 
   fun {Pyth N}
      <<list [X Y Z] with
	 X <- {List.number 1 N 1}
	 Y <- {List.number X N 1}
	 Z <- {List.number Y N 1}
	 where X*X + Y*Y == Z*Z
      >>
   end
 
   {ForAll {Pyth 20} System.show}
 
   {Application.exit 0}
end