packages feed

Frames-0.6.1: test/Chunks.hs

{-# LANGUAGE DataKinds, FlexibleContexts, QuasiQuotes,
             TemplateHaskell, TypeApplications #-}
module Chunks where
import Frames
import Frames.InCore (frameChunks, produceFrameChunks)
import Pipes ((>->))
import qualified Pipes.Prelude as P

tableTypes "Row" "test/data/prestige.csv"

getEducation :: Row -> Double
getEducation = rgetField @Education

chunkInCore :: IO [Double]
chunkInCore = do
  rows <- inCoreAoS (readTable "test/data/prestige.csv")
  let chunks = frameChunks 10 rows
  return $ map (getEducation . flip frameRow 0) chunks

chunkStream :: IO [Double]
chunkStream = runSafeT . P.toListM $
   produceFrameChunks 10 (readTable "test/data/prestige.csv")
   >-> P.map (getEducation . flip frameRow 0)