We take for granted that the goto statement is bad. Instead, we employ alternatives that make our code easier to understand and reason over, namely structured looping constructs such as while-loops and for-loops.
But have you ever considered that functional programmers look down on our looping constructs (or more specifically, our impure use of variables) in the same way we look down on goto? And they've got a point. By avoiding some of our most time-honoured tricks, we can end up with code that's not only easier to understand and reason over, but that scales better.
Join Joe Albahari, author of LINQPad and C# 5.0 in a Nutshell, for an hour of functional fundamentalism. Everything will be explained simply and in the familiar language of C#, without mathematics, LISP or Haskell!