> A disadvantage of pattern matching is that it's relatively easy to write a function where you define a variable and then first access it 500 lines later.
I've written plenty of OCaml, and I can't see how this would ever be a problem. Are you writing 500 line functions in OCaml? It seems like it would be difficult to write such a long function in OCaml. An why would pattern matching cause it?
Maybe I'm misunderstanding something.