Frames-streamly-0.3.1.0: examples/DayOfWeek.hs
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeFamilies #-}
module DayOfWeek where
import qualified Frames.Streamly.ColumnTypeable as FStreamly
import Frames.Streamly.OrMissing -- for derivingOrMissingUnboxVectorFor' and required in scope imports
import qualified Data.Readable as Readable
data DayOfWeek = Monday | Tuesday | Wednesday | Thursday | Friday | Saturday | Sunday deriving (Show, Eq, Enum, Bounded)
-- This derives Unbox and VectorFor for DayOfWeek and (OrMissing DayOfWeek)
derivingOrMissingUnboxVectorFor'
(derivingUnbox
"DayOfWeek"
[t|DayOfWeek -> Word8|]
[e|fromIntegral . fromEnum|]
[e|toEnum . fromIntegral|])
"DayOfWeek"
[e|Monday|]
instance Readable.Readable DayOfWeek where
fromText "mon" = return Monday
fromText "tue" = return Tuesday
fromText "wed" = return Wednesday
fromText "thu" = return Thursday
fromText "fri" = return Friday
fromText "sat" = return Saturday
fromText "sun" = return Sunday
fromText _ = mzero
instance FStreamly.Parseable DayOfWeek where
parse = fmap FStreamly.Definitely . Readable.fromText