As a functional programming exercise, I thought I'd write a little program to rank crafting recipes in an mmo by profitability. 

In an OO language, I'd make strategy objects for each recipe, with Cost(), ExpectedRevenue(), and Volume() as members. I'd then put all the objects in a list and sort them by a profitability/time function. 

Trying to accomplish the same result in F#, but I'm not certain how to go about it. I have some disjointed cost functions, for example:

```
let cPM (ss,marble) = (15.0 * ss + 10.0 * marble + 0.031) / 5.0
let cTRef (tear,clay) = (tear + 10.0 * clay + 0.031) / 5.0

```

and then revenue and volume definitions like:

```
let rPM = 1.05
let vPM = 50

```

but I'm not sure what to do now. Make a list of tuples that look like

```
(name: string, cost:double, revenue:double, volume:int) 

```

and then sort the list? It feels like I'm missing something- still thinking in OO, not to mention adding new recipes in this fashion will be rather awkward.

Has anyone any tips to use the functional concepts in a better way? It seemed like this type of calculation problem would be a good fit for the functional style.

Much appreciated.