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

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

Control.Arrow.ArrowIO

Description

Lifting of IO actions to arrows

Synopsis

- class Arrow a => ArrowIO (a :: Type -> Type -> Type) where
  - arrIO :: (b -> IO c) -> a b c
  - arrIO0 :: IO c -> a b c
  - arrIO2 :: (b1 -> b2 -> IO c) -> a (b1, b2) c
  - arrIO3 :: (b1 -> b2 -> b3 -> IO c) -> a (b1, (b2, b3)) c
  - arrIO4 :: (b1 -> b2 -> b3 -> b4 -> IO c) -> a (b1, (b2, (b3, b4))) c
- class (Arrow a, ArrowIO a) => ArrowIOIf (a :: Type -> Type -> Type) where
  - isIOA :: (b -> IO Bool) -> a b b

# Documentation

class Arrow a => ArrowIO (a :: Type -> Type -> Type) where #

the interface for converting an IO action into an arrow

Minimal complete definition

arrIO

Methods

arrIO :: (b -> IO c) -> a b c #

construct an arrow from an IO action

arrIO0 :: IO c -> a b c #

construct an arrow from an IO action without any parameter

arrIO2 :: (b1 -> b2 -> IO c) -> a (b1, b2) c #

construction of a 2 argument arrow from a binary IO action | | example: `a1 &&& a2 >>> arr2 f`

arrIO3 :: (b1 -> b2 -> b3 -> IO c) -> a (b1, (b2, b3)) c #

construction of a 3 argument arrow from a 3-ary IO action | | example: `a1 &&& a2 &&& a3 >>> arr3 f`

arrIO4 :: (b1 -> b2 -> b3 -> b4 -> IO c) -> a (b1, (b2, (b3, b4))) c #

construction of a 4 argument arrow from a 4-ary IO action | | example: `a1 &&& a2 &&& a3 &&& a4 >>> arr4 f`

#### Instances

Instances details

ArrowIO IOLA # |
Instance details Defined in Control.Arrow.IOListArrow Methods arrIO :: (b -> IO c) -> IOLA b c # arrIO0 :: IO c -> IOLA b c # arrIO2 :: (b1 -> b2 -> IO c) -> IOLA (b1, b2) c # arrIO3 :: (b1 -> b2 -> b3 -> IO c) -> IOLA (b1, (b2, b3)) c # arrIO4 :: (b1 -> b2 -> b3 -> b4 -> IO c) -> IOLA (b1, (b2, (b3, b4))) c #
ArrowIO (IOSLA s) # |
Instance details Defined in Control.Arrow.IOStateListArrow Methods arrIO :: (b -> IO c) -> IOSLA s b c # arrIO0 :: IO c -> IOSLA s b c # arrIO2 :: (b1 -> b2 -> IO c) -> IOSLA s (b1, b2) c # arrIO3 :: (b1 -> b2 -> b3 -> IO c) -> IOSLA s (b1, (b2, b3)) c # arrIO4 :: (b1 -> b2 -> b3 -> b4 -> IO c) -> IOSLA s (b1, (b2, (b3, b4))) c #

class (Arrow a, ArrowIO a) => ArrowIOIf (a :: Type -> Type -> Type) where #

the interface for converting an IO predicate into a list arrow

Methods

isIOA :: (b -> IO Bool) -> a b b #

builds an arrow from an IO predicate

if the predicate holds, the single list containing the input is returned, else the empty list, similar to `isA`

#### Instances

Instances details

ArrowIOIf IOLA # |
Instance details Defined in Control.Arrow.IOListArrow Methods isIOA :: (b -> IO Bool) -> IOLA b b #
ArrowIOIf (IOSLA s) # |
Instance details Defined in Control.Arrow.IOStateListArrow Methods isIOA :: (b -> IO Bool) -> IOSLA s b b #