Skip to content

larsab/inf-3910-5

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 

Repository files navigation

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

About

Applied functional programming

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published