Safe Haskell | None |
---|---|
Language | Haskell2010 |
- itemized :: forall a' w a b. (Profunctor w, Strong w, UniqueMember a a', UniqueMember b (Replace a b a')) => w a b -> w (Many a') (Many (Replace a b a'))
- itemized' :: Profunctor w => w a b -> w (Many '[a]) (Many '[b])
- projected :: forall a' proxy w a b. (Profunctor w, Strong w, Select a a', Amend' a b a') => proxy a' -> w (Many a) (Many b) -> w (Many a') (Many (Replaces a b a'))
- (*&&*) :: forall w a1 b1 a2 b2. (Category w, Profunctor w, Strong w, Select a1 (AppendUnique a1 a2), Select a2 (AppendUnique a1 a2)) => w (Many a1) (Many b1) -> w (Many a2) (Many b2) -> w (Many (AppendUnique a1 a2)) (Many (Append b1 b2))
- (>&&>) :: forall w a b1 a2 b2. (Category w, Profunctor w, Strong w, Select (Complement b1 a2) b1, Select a2 b1) => w a (Many b1) -> w (Many a2) (Many b2) -> w a (Many (Append (Complement b1 a2) b2))
- (<&&<) :: (Category w, Profunctor w, Strong w, Select (Complement b1 a2) b1, Select a2 b1) => w (Many a2) (Many b2) -> w a (Many b1) -> w a (Many (Append (Complement b1 a2) b2))
Combinators similar to Profunctor Strong
itemized :: forall a' w a b. (Profunctor w, Strong w, UniqueMember a a', UniqueMember b (Replace a b a')) => w a b -> w (Many a') (Many (Replace a b a')) Source #
projected :: forall a' proxy w a b. (Profunctor w, Strong w, Select a a', Amend' a b a') => proxy a' -> w (Many a) (Many b) -> w (Many a') (Many (Replaces a b a')) Source #
(*&&*) :: forall w a1 b1 a2 b2. (Category w, Profunctor w, Strong w, Select a1 (AppendUnique a1 a2), Select a2 (AppendUnique a1 a2)) => w (Many a1) (Many b1) -> w (Many a2) (Many b2) -> w (Many (AppendUnique a1 a2)) (Many (Append b1 b2)) infixr 3 Source #
Split the input between the two argument arrows and combine their output.
The type of the resultant input is a Many
of all the unique types in the argument arrows' inputs,
The type of the resultant output is a concatenated Many
of the arguments arrows' outputs.
Analogous to a Many
combination of both of ***
and &&&
.
It is a compile error if the types are not distinct in each of the argument arrow inputs.
(>&&>) :: forall w a b1 a2 b2. (Category w, Profunctor w, Strong w, Select (Complement b1 a2) b1, Select a2 b1) => w a (Many b1) -> w (Many a2) (Many b2) -> w a (Many (Append (Complement b1 a2) b2)) infixr 3 Source #
Left-to-right chaining of arrows one after another, where left over input not consumed by the right arrow is forwarded to the output. It is a compile error if the types are not distinct in each of the argument arrow inputs, or if the input of the second arrow is not a subset of the output of the first arrow.
(<&&<) :: (Category w, Profunctor w, Strong w, Select (Complement b1 a2) b1, Select a2 b1) => w (Many a2) (Many b2) -> w a (Many b1) -> w a (Many (Append (Complement b1 a2) b2)) infixl 2 Source #
right-to-left version of '(>&&>)'