I have a C# method that looks a bit like this:
bool Eval() {
// do some work
if (conditionA) {
// do some work
if (conditionB) {
// do s
Please don't be afraid to extract functions. This is key to controlling complex logic.
let rec partA () =
// do some work
let aValue = makeA ()
if conditionA
then partB aValue
else false
and partB aValue =
// do some work
let bValue = makeB aValue
if conditionB
then partC bValue
else false
and partC bValue =
// do some work
conditionC