<p>I'm trying to learn about catamorphisms and I've read <a href="http://en.wikipedia.org/wiki/Catamorphism" rel="noreferrer">the Wikipedia article</a> and the first couple posts in <a href="http://lorgonblog.spaces.live.com/Blog/cns!701679AD17B6D310!256.entry" rel="noreferrer">the series of the topic for F#</a> on the <em>Inside F#</em> blog. </p>

<p>I understand that it's a generalization of folds (i.e., mapping a structure of many values to one value, including a list of values to another list). And I gather that the fold-list and fold-tree is a canonical example.</p>

<p>Can this be shown to be done in C#, using LINQ's <code>Aggregate</code> operator or some other higher-order method?</p>

I've been doing more reading, including a Micorosft Research paper on
functional programming with catamorphisms ("bananas")
, and it seems that
catamorphism
just refers to any function that takes a list and typically breaks it down to a single value (
```
IEnumerable<A> => B
```
), like
```
Max()
```
,
```
Min()
```
, and in the general case,
```
Aggregate()
```
, would all be a catamorphisms for lists.
I was previously under the impression that it refefred to a way of creating a function that can generalize different folds, so that it can fold a tree
and
a list. There may actually still be such a thing, some kind of
functor
or
arrow
maybe but right now that's beyond my level of understanding.