newsfilter.io
Conference Presentation, Lecture

Why Functional Programming Doesn't Matter

  • Functional programming principles are advocated for defining custom control flows and managing multiple conditional branches via higher-order functions, though full program purity is deemed difficult to enforce in large-scale systems.
  • Real-world trading environments require handling side effects and executing systems quickly to adapt to new opportunities or regulations that may mandate updates within a week.
  • While laziness can hide infinite data structures and separate termination conditions from loops, it is utilized rarely at Jane Street due to the difficulty of reasoning about performance and the risk of unpredictable execution during volatile market conditions.
  • Correctness is prioritized over obscurely correct code that cannot be easily verified, as the firm trades its own capital where minor bugs could result in total financial loss or termination of employment.
  • OCaml is selected over Haskell because it offers reasonable performance with C-like predictability, ensuring that slight code changes do not unexpectedly invalidate compiler optimizations.
  • Expressive static types are ranked as the most critical feature, surpassing purity and laziness, as they force the handling of value absence via options and compile-time error checking for missing cases when types are extended.
  • The core engineering strategy involves making illegal states impossible to represent, which prunes combinatorial explosion early and prevents accidental invariant breaks compared to manual verification.
  • The organization maintains a high system-to-developer ratio and relies on open-sourced code found on its website and GitHub to support rapid and safe system extension.