User loginNavigation |
Formal treatments (or examples of) of "function concatenation"?We're familiar with the notion of function composition which is essentially sticking functions end-to-end: (a -> b) -> (b -> c) -> (a -> c) However, is there any formal treatment of function "concatenation" for functions that operate on n-tuples that would be essentially sticking functions "side-by-side"? The type would be something like this (where a, b, c, and d are n-tuples and ++ is the concatenation operator): (a -> b) -> (c -> d) -> (a ++ c) -> (b ++ d) I think a visual example allows a good intuition for what I'm talking about. If F is a function from a 1-tuple to a 2-tuple, and G is a function from a 2-tuple to a 1-tuple, then their composition would be this: IN | .--o--------. | F | |--o-----o--| | | .--o-----o--. | G | |--o--------| | OUT and their concatenation would be this: IN IN IN | | | .--o--------.--o-----o--. | F | G | |--o-----o--|--o--------| | | | OUT OUT OUT Composition indicates a dependence (e.g. G is dependent on the output of F) that requires sequential evaluation whereas concatenation indicates an independence (e.g. F and G do not share inputs) that allows for parallel evaluation. Both operations are associative. There exist operations with a similar spirit to the concatenation expressed above: the functional form of construction in Backus's FP, the *** operator for the -> arrow in Haskell, and the family of spread combinators in Factor to name a few. However, none of these deal with concatenated inputs/outputs and none of these are associative, so they're not quite what I'm after. Any pointers towards related mathematical notions or languages with a similar feature would be much appreciated. By John Nowak at 2010-02-03 06:11 | LtU Forum | previous forum topic | next forum topic | other blogs | 7808 reads
|
Browse archives
Active forum topics |
Recent comments
22 weeks 6 days ago
22 weeks 6 days ago
22 weeks 6 days ago
45 weeks 19 hours ago
49 weeks 2 days ago
50 weeks 6 days ago
50 weeks 6 days ago
1 year 1 week ago
1 year 6 weeks ago
1 year 6 weeks ago