Skip to content

Latest commit

 

History

History
72 lines (54 loc) · 1.29 KB

Agenda.md

File metadata and controls

72 lines (54 loc) · 1.29 KB

Agenda

Introduction

  • Historical overview
  • Imperative and decalarative programming
  • Complexity
  • The perils of mutable state
  • Static and dynamic typing
  • Abstraction
  • Data representation
  • Composition

Functions

  • Relations vs. functions
  • Introduction to Lambda calculus
  • Binding and environments
  • Pure functions: Expressions and statements
  • Referential transparency
  • Composition
  • Higher-order functions
  • Currying and partial application
  • Recursion and tail call optimization

Introduction to F# on .NET Core

  • Order of declarations and files
  • Mutual recursion: types, functions and modules
  • Pattern matching
  • Active patterns
  • Mutable variables

Types and type systems

  • Introduction to types
  • Type systems and type checking
  • Type inference
  • The Curry-Howard isomorphism
    • Existence as proof
  • Algebraic data types
  • OOP features

Patterns and abstraction

  • Functors
  • Applicative functors
  • Monads
  • Optics

Generic programming in F#

  • Types, classes and members
  • Interfaces
  • Constraints

Designing with types

  • Stating intent
  • Domain modeling
  • Algebraic types as conjunction and disjunction
  • Making invalid state unrepresentable

Domain Specific Languages

  • Combinators
  • HTML combinators

Reactive programming

  • Fable React
  • Fable Elmish