packages feed

vinyl-0.1.0.0: Data/Vinyl/Field.hs

{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE PolyKinds #-}
{-# LANGUAGE KindSignatures #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE GADTs #-}

module Data.Vinyl.Field where

import GHC.TypeLits

-- A field is a symbol key and a type for its value.
data (:::) :: Symbol -> * -> * where
  Field :: sy ::: t

instance (SingI sy, Show t) => Show (sy ::: t) where
  show Field = fromSing (sing :: Sing sy)