This repo has:
- F# Training process
- Koans and Katas (Dojos) compiled by Mark.
- Some code exercises Alex worked on during mentorship sessions with Mathias (the fancy font I am using is Fira Code: https://github.com/tonsky/FiraCode).
-
Work through http://www.fsharpworkshop.com/
-
Main topics to learn and practice:
- Funtional Programming paradigm
https://fsharpforfunandprofit.com/posts/thinking-functionally-intro/
- Code organization using FSharp modules
https://fsharpforfunandprofit.com/series/a-recipe-for-a-functional-app.html
Taking your craft seriously with F# - Tomas Petricek
- Exploratory programming with FSI and the scripting environment
http://brandewinder.com/2016/02/06/10-fsharp-scripting-tips/
- Pattern matching (particularly over DU's, tuples, lists, and perhaps records). Active patterns are less important but would be good to touch on if time permits.
- Async computation expressions and the FSharp.Async core library.
https://fsharpforfunandprofit.com/posts/concurrency-async-and-parallel/
http://tomasp.net/blog/csharp-async-gotchas.aspx/
http://tomasp.net/blog/async-csharp-differences.aspx/
- Railway-oriented programming.
http://fsharpforfunandprofit.com/rop/
http://fsharpforfunandprofit.com/posts/railway-oriented-programming-carbonated/
- Monadic style and how it applies to F# option types, seq, async, (or even asyncSeq) incl. Map, Bind, Apply
https://fsharpforfunandprofit.com/series/map-and-bind-and-apply-oh-my.html
- Recursive folds, catamorphisms (fold generalization)
https://fsharpforfunandprofit.com/series/recursive-types-and-folds.html
https://lorgonblog.wordpress.com/2008/04/05/catamorphisms-part-one/
-
Applicative style and how it applies to data validation
-
Agents/MailboxProcessors, Actors
The Actor Model in F# and Akka.Net - Riccardo Terrell
- DDD, ie. modeling a business domain using the F# type system
Domain Modeling with Types - Ryan Riley
- Type Providers
Happily together: F# and SQL - Dmitry Morozov & Dmitry Sevastianov
- Funcional Architecture
Functional Architecture - Mark Seemann
Functional Programming design patterns - Scott Wlaschin
Code Review/Refactor Live - Scott Wlaschin
- I understand monads/applicative functors are pretty abstract subjects. It's sufficient to understand how to use common ones like async, seq, maybe and either.
- Solve a few DoJos in https://github.com/RealtyShares/fsharp-training/blob/master/KoansAndKatas/koanwiki.md
We make relatively heavy use of the following F# libraries. There's a conceptual learning curve associated with each, so it would be good to work through a few small Katas that incorporate them in some way:
- Suave (for HTTP/JSON APIs)
Suave from Scratch - Henrik Feldt
Functional Web Applications using F# and Suave - Tomas Jansson
-
FSharpx.Validation (for general data validation, particularly the applicative operators: <!> <> < *>)
-
FParsec (for basic parsing tasks)
Understanding parser combinators: a deep dive - Scott Wlaschin
- Video classes: https://fsharp.tv/courses/ incl. free class: https://learn.decacoder.com/course/uid-01-begin-fsharp
- Mentor: Mathias - [email protected].