Control.Monad.Zip

base-4.8.2.0: Basic libraries

Copyright | (c) Nils Schweinsberg 2011, (c) George Giorgidze 2011 (c) University Tuebingen 2011
License | BSD-style (see the file libraries/base/LICENSE)
Maintainer | libraries@haskell.org
Stability | experimental
Portability | portable
Safe Haskell | Safe
Language | Haskell2010

Control.Monad.Zip

Description

Monadic zipping (used for monad comprehensions)

Synopsis

- class Monad m => MonadZip m where
  - mzip :: m a -> m b -> m (a, b)
  - mzipWith :: (a -> b -> c) -> m a -> m b -> m c
  - munzip :: m (a, b) -> (m a, m b)

# Documentation

class Monad m => MonadZip m where

`MonadZip` type class. Minimal definition: `mzip` or `mzipWith`

Instances should satisfy the laws:

- Naturality :

    liftM (f *** g) (mzip ma mb) = mzip (liftM f ma) (liftM g mb)

- Information Preservation:

    liftM (const ()) ma = liftM (const ()) mb
    ==>
    munzip (mzip ma mb) = (ma, mb)

Minimal complete definition

mzip | mzipWith

Methods

mzip :: m a -> m b -> m (a, b)

mzipWith :: (a -> b -> c) -> m a -> m b -> m c

munzip :: m (a, b) -> (m a, m b)

Instances

MonadZip [] |
MonadZip Identity |