packages feed

cassava-embed-0.1.0.0: example/Types.hs

{-# LANGUAGE CPP #-}
{-# LANGUAGE OverloadedStrings #-}
#if __GLASGOW_HASKELL__ >= 800
{-# LANGUAGE DeriveLift #-}
{-# LANGUAGE StandaloneDeriving #-}
#endif
{-# LANGUAGE TemplateHaskell #-}

module Types where

import Data.Csv
#if __GLASGOW_HASKELL__ < 800
import Language.Haskell.TH.Lift
#else
import Language.Haskell.TH.Syntax
#endif

data Rec = Rec
  { _rKey :: !String
  , _rVal :: !Int
  } deriving (Show)

#if __GLASGOW_HASKELL__ < 800
$(deriveLift ''Rec)
#else
deriving instance Lift Rec
#endif

instance FromNamedRecord Rec where
  parseNamedRecord r = Rec <$> r .: "key" <*> r .: "val"