mirror of
https://gitlab.dit.htwk-leipzig.de/computermusik-ws23/data-composition.git
synced 2025-05-18 22:51:48 +02:00
45 lines
1.2 KiB
Haskell
45 lines
1.2 KiB
Haskell
{-# LANGUAGE OverloadedStrings #-}
|
|
{-# LANGUAGE TemplateHaskell #-}
|
|
-- This requires my custom BootTidal.hs
|
|
|
|
import Prelude hiding (filter)
|
|
import qualified Data.ByteString.Lazy as BL
|
|
import Data.Csv -- this is from the Cassava library
|
|
import qualified Data.Vector as V
|
|
-- import System.Directory (doesFileExist)
|
|
-- import Text.Printf
|
|
-- import Control.Monad (forM_)
|
|
import GHC.IO.Exception
|
|
import Control.Exception (try)
|
|
|
|
|
|
data TimestampedDatum = TimestampedDatum {
|
|
timestamp :: String,
|
|
datum :: Float
|
|
} deriving Show
|
|
|
|
dataPath = "../data/weather/balcony_temperature.csv"
|
|
|
|
instance FromNamedRecord TimestampedDatum where
|
|
parseNamedRecord r =
|
|
TimestampedDatum
|
|
<$> r .: "time"
|
|
<*> r .: "C.value"
|
|
|
|
|
|
type ErrorMsg = String
|
|
type CsvData = (Header, V.Vector TimestampedDatum)
|
|
|
|
parseCsv :: FilePath -> IO (Either ErrorMsg CsvData)
|
|
parseCsv filePath = do
|
|
result <- try $ BL.readFile filePath
|
|
return $ case result of
|
|
Left (exception :: IOException) -> Left $ show exception
|
|
Right contents -> decodeByName contents
|
|
|
|
getList :: CsvData -> V.Vector TimestampedDatum
|
|
getList = snd
|
|
|
|
-- getValue :: TimestampedDatum -> Float
|
|
-- getValue = datum
|