fork download
  1. flatten :: [[Float]] -> [Float]
  2. flatten [] = []
  3. flatten [y] = y
  4. flatten ([]:xs) = flatten xs
  5. flatten (y:[]:xs) = flatten $ y:xs
  6. flatten ([y]:(yy:ys):xs) = y : (y + yy)/2 : flatten ((yy:ys):xs)
  7. flatten ((y:ys):zs:xs) = y : flatten (ys:zs:xs)
  8.  
  9. main = do
  10. let ls = [[1, 2, 3, 4, 5], [6, 5, 4, 3], [-3, -3, -3]]
  11. print ls
  12. let fs = flatten ls
  13. print fs
Success #stdin #stdout 0s 4736KB
stdin
Standard input is empty
stdout
[[1.0,2.0,3.0,4.0,5.0],[6.0,5.0,4.0,3.0],[-3.0,-3.0,-3.0]]
[1.0,2.0,3.0,4.0,5.0,5.5,6.0,5.0,4.0,3.0,0.0,-3.0,-3.0,-3.0]