If you consider just Dags, I believe that this question is equivalent to
asking what set of combinators will allow you to create an arbitrary
composition of functions that allow sharing inputs and returning
multiple results. And I think that one answer to that is the set of
combinators that make up the Arrow class. If you want to include
recursion (i.e. cycles), then you'd have to throw in ArrowLoop (although
that might only provide a nested form of cycles). It's in this sense
that Fudgets is analogous to Fruit.
-Paul
Brian Hulley wrote:
Brian Hulley wrote:
Anyway to get to my point, though all this sounds great, I'm
wondering how to construct an arbitrary graph of Fudgets just from a
fixed set of combinators, such that each Fudget (node in the graph)
is only mentioned once in the expression. To simplify the question,
assume we have the following data structure to describe the desired
graph:
data LinkDesc a
= Series a a
| Broadcast a [a]
| Merge [a] a
type GraphDesc a = [LinkDesc a]
The above is more complicated than necessary. The problem can be
captured by:
type GraphDesc a = [(a,a)]
Brian.
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe