fusion_basic :: IO Int
fusion_basic = do
    xs <- F.toListM $ F.each [1..1000000]
      & F.filter even
      & F.map (+1)
      & F.drop 1000
      & F.map (+1)
      & F.filter (\x -> x `mod` 2 == 0)
    assert (Prelude.length xs == 499000) $
        return (Prelude.length (xs :: [Int]))
fusion_basic :: IO Int
fusion_basic = do
    xs <- F.toListM $ F.each [1..1000000]
      & F.filter even
      & F.map (+1)
      & F.drop 1000
      & F.map (+1)
      & F.filter (\x -> x `mod` 2 == 0)
    assert (Prelude.length xs == 499000) $
        return (Prelude.length (xs :: [Int]))
fusion_basic = do
    xs <- F.toListM $ F.each [1..1000000]
      & F.filter even
      & F.map (+1)
      & F.drop 1000
      & F.map (+1)
      & F.filter (\x -> x `mod` 2 == 0)
    assert (Prelude.length xs == 499000) $
        return (Prelude.length (xs :: [Int]))