<p>Anyone have a decent example, preferably practical/useful, they could post demonstrating the concept?</p>

It's a fairly simple process. Take a function, bind one of its arguments and return a new function. For example:
```
```
let concatStrings left right = left + right
let makeCommandPrompt= appendString "c:\> "
```
```
Now by currying the simple concatStrings function, you can easily add a DOS style command prompt to the front of any string! Really useful!
Okay, not really. A more useful case I find is when I want to have a make a function that returns me data in a stream like manner.
```
```
let readDWORD array i = array[i] | array[i + 1] << 8 | array[i + 2] << 16 | 
    array[i + 3] << 24 //I've actually used this function in Python.
```
```
The convenient part about it is that rather than creating an entire class for this sort of thing, calling the constructor, calling obj.readDWORD(), you just have a function that can't be mutated out from under you.