Skip to content

Latest commit

 

History

History
89 lines (65 loc) · 1.74 KB

README.md

File metadata and controls

89 lines (65 loc) · 1.74 KB

INF-3910-5

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

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

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