Types
        Paolo G. Giarrusso edited this page Jul 13, 2014 
        ·
        
          8 revisions
        
      
  Pages 16
Clone this wiki locally
Types
| Type | Equivalent to | Notes | 
|---|---|---|
| type Lens               s t a b = ∀f. Functor f => (a -> f b) -> s -> f t | s -> (a, b -> t) | |
| type Traversal          s t a b = ∀f. Applicative f => (a -> f b) -> s -> f t | s -> ∃n. (a^n, b^n -> t) | X | 
| type Getter             s   a   = ∀f. Gettable f => (a -> f a) -> s -> f s | s -> a | |
| type Setter             s t a b = ∀f. Settable f => (a -> f b) -> s -> f t | (a -> b) -> s -> t | |
| type Fold               s   a   = ∀f. (Gettable f, Applicative f) => (a -> f a) -> s -> f s | s -> [a] | |
| type Iso                s t a b = ∀f k. (Isomorphic k, Functor f) => k (a -> f b) (s -> f t) | (s -> a, b -> t) | |
| Indexed | ||
| type IndexedLens      i s t a b = ∀f k. (Indexed i k, Functor f) => k (a -> f b) (s -> f t) | s -> ((i, a), b -> t) | |
| type IndexedTraversal i s t a b = ∀f k. (Indexed i k, Applicative f) => k (a -> f b) (s -> f t) | s -> ∃n. ((i, a)^n, b^n -> t) | X | 
| type IndexedGetter    i s   a   = ∀f k. (Indexed i k, Gettable f) => k (a -> f a) (s -> f s) | s -> (i, a) | |
| type IndexedSetter    i s t a b = ∀f k. (Indexed i k, Settable f) => k (a -> f b) (s -> f t) | ((i, a) -> b) -> s -> t | |
| type IndexedFold      i s   a   = ∀f. (Indexed i k, Gettable f, Applicative f) => k (a -> f a) (s -> f s) | s -> [(i, a)] | |
| Monadic | ||
| type Action           m s   a   = ∀f. Effective m r f => (a -> f a) -> s-> f s | s -> m a | |
| type MonadicFold      m s   a   = ∀f. (Effective m r f, Applicative f) => (a -> f a) -> s -> f s | s -> m [a] | |
| Hypothetical | ||
| type PartialLens        s t a b = ∀f. Pointed f => (a -> f b) -> s -> f t | s -> Either t (a, b -> t) | |
| type NonEmptyTraversal  s t a b = ∀f. Apply f => (a -> f b) -> s -> f t | s -> ∃n. (a^(n+1), b^(n+1) -> t) | X | 
- 
a^nmeans "a list ofnvalues of typea".