compdata-0.8.1.3: src/Data/Comp/DeepSeq.hs
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeOperators #-}
--------------------------------------------------------------------------------
-- |
-- Module : Data.Comp.DeepSeq
-- Copyright : (c) 2010-2011 Patrick Bahr
-- License : BSD3
-- Maintainer : Patrick Bahr <paba@diku.dk>
-- Stability : experimental
-- Portability : non-portable (GHC Extensions)
--
-- This module defines full evaluation of signatures, which lifts to full
-- evaluation of terms and contexts.
--
--------------------------------------------------------------------------------
module Data.Comp.DeepSeq
(
NFDataF(..)
)
where
import Control.DeepSeq
import Data.Comp.Annotation
import Data.Comp.Derive
import Data.Comp.Term
instance (NFDataF f, NFData a) => NFData (Cxt h f a) where
rnf (Hole x) = rnf x
rnf (Term x) = rnfF x
instance (NFDataF f, NFData a) => NFDataF (f :&: a) where
rnfF (f :&: a) = rnfF f `seq` rnf a
$(derive [liftSum] [''NFDataF])
$(derive [makeNFDataF] [''Maybe, ''[], ''(,)])