intersect.hs 469 B

12345678910111213141516
  1. module Intersect where
  2. intersect :: (Ord t) => [t] -> [t] -> [t]
  3. intersect a [] = []
  4. intersect [] a = []
  5. intersect (x:xs) (y:ys)
  6. | x == y = x : intersect xs ys
  7. | x < y = intersect xs (y:ys)
  8. | y > y = intersect (x:xs) ys
  9. intersectAll :: (Ord t) => [[t]] -> [t]
  10. intersectAll (l:ls) = (foldr intersect l) ls
  11. intersectAll [] = undefined
  12. multiples n = [n*k | k <- [1..]]
  13. commonMultiples a b c =
  14. intersectAll [ multiples n | n <- [a,b,c]]