reform-0.2.7.1: reform is a type-safe HTML form generation and validation library

Safe HaskellNone
LanguageHaskell98

Control.Applicative.Indexed

Contents

Description

This module provides a type-indexed / parameterized version of the Functor and Applicative classes.

Synopsis

type-indexed / parameterized classes

class IndexedFunctor f where Source

a class for a 'type-indexed' or paramaterized functor

note: not sure what the most correct name is for this class, or if it exists in a well supported library already.

Methods

imap Source

Arguments

:: (x -> y)

function to apply to first parameter

-> (a -> b)

function to apply to second parameter

-> f x a

indexed functor

-> f y b 

imap is similar to fmap

Instances

class IndexedFunctor f => IndexedApplicative f where Source

a class for a 'type-indexed' or paramaterized applicative functors

note: not sure what the most correct name is for this class, or if it exists in a well supported library already.

Minimal complete definition

ipure, (<<*>>)

Methods

ipure :: x -> a -> f x a Source

similar to pure

(<<*>>) :: f (x -> y) (a -> b) -> f x a -> f y b infixl 4 Source

similar to <*>

(*>>) :: f x a -> f y b -> f y b infixl 4 Source

similar to *>

(<<*) :: f x a -> f y b -> f x a infixl 4 Source

similar to <*

Instances

(<<$>>) :: IndexedFunctor f => (a -> b) -> f y a -> f y b infixl 4 Source

similar to <$>. An alias for imap id

(<<**>>) :: IndexedApplicative f => f x a -> f (x -> y) (a -> b) -> f y b Source

A variant of <<*>> with the arguments reversed.

liftIA :: IndexedApplicative f => (a -> b) -> (x -> y) -> f a x -> f b y Source

Lift a function to actions. This function may be used as a value for imap in a IndexedFunctor instance.

liftIA2 :: IndexedApplicative f => (a -> b -> c) -> (x -> y -> z) -> f a x -> f b y -> f c z Source

Lift a binary function to actions.

liftIA3 :: IndexedApplicative f => (a -> b -> c -> d) -> (w -> x -> y -> z) -> f a w -> f b x -> f c y -> f d z Source

Lift a binary function to actions.

WrappedApplicative

newtype WrappedApplicative f index a Source

a wrapper which lifts a value with an Applicative instance so that it can be used as an IndexedFunctor or IndexedApplicative

d :: WrappedApplicative Maybe y Char
d = WrappedApplicative (Just succ) <<*>> WrappedApplicative (Just 'c')

Constructors

WrappedApplicative 

Fields

unwrapApplicative :: f a