An inner function is defined inside another scope or function. In F#, functions are values, so a helper can be created exactly where it is needed rather than exposed more widely. section 3.1.3
This keeps helpers local: `makeFullName` exists only while `greetingTextWithFunction` is being defined. Use that narrow scope when a function supports one operation, while remembering that a one-off helper may add unnecessary ceremony. section 3.1.3
let greetingTextWithFunction person =
let makeFullName fname sname = #1
$"{fname} {sname}" #2
let fullName = makeFullName "Frank" "Schmidt" #3
$"Greetings {fullName} from {person}."
A greeting function defines `makeFullName`, calls it locally, and returns the completed greeting. section 3.1.3
An inner function can read values declared before its nested scope. Referencing such an outer value is called capturing; the compiler handles it, though it can matter in high-performance scenarios. section 3.1.3




