{-# LANGUAGE DataKinds #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE KindSignatures #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE TypeOperators #-} {-# OPTIONS_GHC -fno-warn-orphans #-} -- | Define the column types used to represent our data. Here, we wish -- to parse data captured as 'Data.Time.LocalTime.LocalTime' values -- into the \"America/Chicago\" time zone. module Columns (MyColumns, TimeIn(..), Chicago(..)) where import Data.Proxy (Proxy(..)) import Frames (CommonColumns) import Frames.ColumnTypeable (Parseable(..)) import Frames.CSV (defaultSep, produceTokens) import TimeIn -- | Define a 'Parseable' instance for @TimeIn "America/Chicago"@ timeIn "America/Chicago" -- | We need this newtype because Template Haskell can not handle the -- type @TimeIn "America/Chicago"@ as of @GHC-8.0.1@ and -- @template-haskell-2.11.0.0@ newtype Chicago = Chicago (TimeIn "America/Chicago") deriving Show instance Parseable Chicago where parse = fmap (fmap Chicago) . parse -- | The column types we expect our data to conform to type MyColumns = Chicago ': CommonColumns