Applied functional programming course taught at Department of Informatics, UiT The Arctic University of Norway.
The Monday's lectures will be devoted to more theoretical aspects of functional programming. The lectures on Wednesday and Thursday will be of a more practical nature, focusing on application in F#.
The primary programming environment used during the course will be:
- F# 4.5
- .NET Core 2.2
- Visual Studio Code
- Fable 2.1 and Elmish
- Paket
- Historical overview
- Imperative and decalarative programming
- Complexity
- The perils of mutable state
- Static and dynamic typing
- Abstraction
- Data representation
- Composition
- 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
- Order of declarations and files
- Mutual recursion: types, functions and modules
- Pattern matching
- Active patterns
- Mutable variables
- Introduction to types
- Type systems and type checking
- Type inference
- The Curry-Howard isomorphism
- Existence as proof
- Algebraic data types
- OOP features
- Functors
- Applicative functors
- Monads
- Types, classes and members
- Interfaces
- Constraints
- Stating intent
- Domain modeling
- Algebraic types as conjunction and disjunction
- Making invalid state unrepresentable
- Combinators
- HTML combinators
- Fable React
- Fable Elmish