Skip to content

RealtyShares/fsharp-training

 
 

Repository files navigation

F# Training

About: Getting RealtyShares devs started with F#

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).

Time estimate: 2 weeks.

  1. Work through http://www.fsharpworkshop.com/

  2. 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.
  1. Solve a few DoJos in https://github.com/RealtyShares/fsharp-training/blob/master/KoansAndKatas/koanwiki.md

Other resources:

Relevant libraries:

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

Chargeable options (Important - please confirm with your manger)

Releases

No releases published

Packages

No packages published

Languages

  • F# 52.7%
  • HTML 45.9%
  • Ruby 0.9%
  • JavaScript 0.3%
  • Shell 0.1%
  • CSS 0.1%