strict-base-0.4.0.0: src/Data/Strict/Class.hs
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE FunctionalDependencies #-}
-----------------------------------------------------------------------------
-- |
-- Module : Data.Strict.Class
-- Copyright : (c) 2017 Daniel Mendler
-- License : BSD-style (see the file LICENSE)
--
-- Maintainer : Daniel Mendler <mail@daniel-mendler.de>
-- Stability : experimental
-- Portability : portable
--
-- IsStrict isomorphism for conversion.
--
-----------------------------------------------------------------------------
module Data.Strict.Class (
IsStrict(..),
liftStrict
) where
class IsStrict l s | l -> s, s -> l where
fromStrict :: s -> l
toStrict :: l -> s
liftStrict :: IsStrict l s => (l -> l) -> (s -> s)
liftStrict f = toStrict . f . fromStrict