神奇的Haskell——“做什么”而不是“怎么做”
--求整数边长的直角三角形
rightTriangles m n = [(a, b, c) | c <- [m..n], b <- [1..c], a <- [1..b], a^2 + b^2 == c^2, gcd c (gcd a b) == 1]
--快速排序
quicksort :: (Ord a) => [a] -> [a]
quicksort [] = []
quicksort (x:xs) =
let smallerSorted = quicksort [a | a <- xs, a <= x]
biggerSorted = quicksort [a | a <- xs, a > x]
in smallerSorted ++ [x] ++ biggerSorted
qsort [] = []
qsort (x:xs) = qsort (filter (< x) xs) ++ [x] ++ qsort (filter (>= x) xs)