- Use `camelCase` for values, functions, and parameters; use `PascalCase` for types, modules, and discriminated union cases.
- Prefer immutable values with `let` bindings — use `mutable` and `<-` only when mutation is genuinely necessary.
- Use the `|>` pipe operator to express data transformation pipelines left-to-right instead of nested function application.
- Use discriminated unions (DUs) to model domain types precisely — prefer `type Shape = Circle of float | Rectangle of float * float` over flags.