Control.Arrow.ArrowNF

hxt-9.3.1.16: A collection of tools for processing XML with Haskell.

Copyright | Copyright (C) 2011 Uwe Schmidt
License | MIT
Maintainer | Uwe Schmidt (uwe\@fh-wedel.de)
Stability | experimental
Portability | non-portable
Safe Haskell | Safe
Language | Haskell98

Control.Arrow.ArrowNF

Description

Arrows for evaluation of normal form results

Synopsis

- strictA :: (Arrow a, NFData b) => a b b
- class Arrow a => ArrowNF a where
- class (Arrow a, ArrowList a) => ArrowWNF a where

# Documentation

strictA :: (Arrow a, NFData b) => a b b #

complete evaluation of an arrow result using `DeepSeq`

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.

class Arrow a => ArrowNF a where #

Methods

rnfA :: NFData c => a b c -> a b c #

Instances

ArrowNF LA # |
Methods rnfA :: NFData c => LA b c -> LA b c #
ArrowNF IOLA # |
Methods rnfA :: NFData c => IOLA b c -> IOLA b c #
ArrowNF (SLA s) # |
Methods rnfA :: NFData c => SLA s b c -> SLA s b c #
ArrowNF (IOSLA s) # |
Methods rnfA :: NFData c => IOSLA s b c -> IOSLA s b c #

class (Arrow a, ArrowList a) => ArrowWNF a where #

partial evaluation of an arrow result using `FlatSeq`

There are tow arrows with force the partial evaluation. By convention the 2. should be less lazy than the 1.

These arrows are sometimes useful for preventing space leaks, especially when parsing complex data structures. In many cases the evaluated AST is more space efficient than the unevaluaded with a lot of closures.

Methods

rwnfA :: WNFData c => a b c -> a b c #

rwnf2A :: WNFData c => a b c -> a b c #

Instances

ArrowWNF LA # |
Methods rwnfA :: WNFData c => LA b c -> LA b c # rwnf2A :: WNFData c => LA b c -> LA b c #
ArrowWNF IOLA # |
Methods rwnfA :: WNFData c => IOLA b c -> IOLA b c # rwnf2A :: WNFData c => IOLA b c -> IOLA b c #
ArrowWNF (SLA s) # |
Methods rwnfA :: WNFData c => SLA s b c -> SLA s b c # rwnf2A :: WNFData c => SLA s b c -> SLA s b c #
ArrowWNF (IOSLA s) # |
Methods rwnfA :: WNFData c => IOSLA s b c -> IOSLA s b c # rwnf2A :: WNFData c => IOSLA s b c -> IOSLA s b c #