-- ------------------------------------------------------------

{- |
   Module     : Control.Arrow.ArrowStrict
   Copyright  : Copyright (C) 2005 Uwe Schmidt
   License    : MIT

   Maintainer : Uwe Schmidt (uwe\@fh-wedel.de)
   Stability  : experimental
   Portability: portable
   Version    : $Id$

   Arrows for complete evaluation of result

-}

-- ------------------------------------------------------------

module Control.Arrow.ArrowStrict
where

import Control.Arrow
import Control.Strategies.DeepSeq

-- |
-- complete evaluation of an arrow result using 'Control.Strategies.DeepSeq.deepSeq'
-- and 'Control.Strategies.DeepSeq.strict'
--
-- this is sometimes useful for preventing space leaks, especially after reading
-- and validation of a document, all DTD stuff is not longer in use and can be
-- recycled by the GC.

strictA	:: (Arrow a, DeepSeq b) => a b b
strictA	= arr strict