What You Should Know Now — and What's Next
What You Should Know Now
- Values, immutability, and type inference — and when
mutableis fine - Functions, currying, partial application, pipelines, and composition
- Tuples, lists, arrays, sequences, maps, and sets, and the functions that transform them
- Records, discriminated unions, and pattern matching, including active patterns
- Option and Result for missing values and errors, and exceptions for the truly exceptional
- Modules, namespaces, classes, interfaces, and object expressions
- Units of measure, generics, and inline functions
- Computation expressions —
seq,async,task, and your own - Agents, type providers, JSON, and interop with C# and .NET
- Testing with Expecto and xUnit, web apps with Giraffe, Saturn, and Falco, Fable, scripting, performance, and deployment
What Should You Learn Next?
- C# — C# is the main .NET language. Reading it fluently unlocks every .NET library, sample, and Stack Overflow answer.
- OCaml — OCaml is F#'s closest relative; its module system (functors) goes further than F#'s.
- Haskell — Haskell takes purity and type classes to their conclusion, and deepens your functional thinking.
- Scala — Scala brings a similar functional-first style to the JVM.
- SQL — SQL pairs naturally with F# data work and type providers.
Build Something
Pick a problem you care about — a personal finance tracker, a data report you produce by hand every month, a small web service — and build it in F# with the types first: model the domain, make invalid states impossible, then write the functions. Share it on GitHub and read code from the F# community (the Fantomas, FsToolkit, and Giraffe repositories are good places to start).