rats = [ [x, (n-x)] |n<- [1.. ], x<- [1.. (n-1) ], (gcd x n) == 1 ]
rats2 = [ show(u) ++ "/" ++ show(v) | [u,v] <- rats]
main = do
mapM_ putStrLn (take 100 rats2)
--
1/1
1/2
2/1
1/3
3/1
1/4
2/3
3/2
4/1
1/5
5/1
1/6
2/5
3/4
4/3
5/2
6/1
1/7
3/5
5/3
7/1
1/8
2/7
4/5
5/4
7/2
...