{-# LANGUAGE DerivingVia #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE UndecidableInstances #-}
module Data.Series.IO (
readCSV,
readCSVFromFile,
writeCSV,
writeCSVToFile,
) where
import Control.Monad.IO.Class ( MonadIO )
import qualified Data.ByteString.Lazy as BL
import Data.Csv ( FromNamedRecord(..), ToNamedRecord(..), )
import Data.Series ( Series )
import qualified Data.Series.Generic.IO as Generic.IO
readCSV :: (Ord k, FromNamedRecord k, FromNamedRecord a)
=> BL.ByteString
-> Either String (Series k a)
readCSV :: forall k a.
(Ord k, FromNamedRecord k, FromNamedRecord a) =>
ByteString -> Either String (Series k a)
readCSV = ByteString -> Either String (Series Vector k a)
forall (v :: * -> *) a k.
(Vector v a, Ord k, FromNamedRecord k, FromNamedRecord a) =>
ByteString -> Either String (Series v k a)
Generic.IO.readCSV
readCSVFromFile :: (MonadIO m, Ord k, FromNamedRecord k, FromNamedRecord a)
=> FilePath
-> m (Either String (Series k a))
readCSVFromFile :: forall (m :: * -> *) k a.
(MonadIO m, Ord k, FromNamedRecord k, FromNamedRecord a) =>
String -> m (Either String (Series k a))
readCSVFromFile = String -> m (Either String (Series Vector k a))
forall (m :: * -> *) (v :: * -> *) a k.
(MonadIO m, Vector v a, Ord k, FromNamedRecord k,
FromNamedRecord a) =>
String -> m (Either String (Series v k a))
Generic.IO.readCSVFromFile
writeCSV :: (ToNamedRecord k, ToNamedRecord a)
=> Series k a
-> BL.ByteString
writeCSV :: forall k a.
(ToNamedRecord k, ToNamedRecord a) =>
Series k a -> ByteString
writeCSV = Series Vector k a -> ByteString
forall (v :: * -> *) a k.
(Vector v a, ToNamedRecord k, ToNamedRecord a) =>
Series v k a -> ByteString
Generic.IO.writeCSV
writeCSVToFile :: (MonadIO m, ToNamedRecord k, ToNamedRecord a)
=> FilePath
-> Series k a
-> m ()
writeCSVToFile :: forall (m :: * -> *) k a.
(MonadIO m, ToNamedRecord k, ToNamedRecord a) =>
String -> Series k a -> m ()
writeCSVToFile = String -> Series Vector k a -> m ()
forall (m :: * -> *) (v :: * -> *) a k.
(MonadIO m, Vector v a, ToNamedRecord k, ToNamedRecord a) =>
String -> Series v k a -> m ()
Generic.IO.writeCSVToFile