Git Product home page Git Product logo

course-plan's Introduction

course-plan

Course plan for the Haskell Beginners 2022 course.

Exercises and Haskell installation instructions can be found in the exercises repository:

๐Ÿก Lecture 1: Fundamentals

  • What is Functional Programming?
  • FP concepts
  • Haskell features
  • Haskell toolchain: GHC, GHCi, ghcup, cabal, hls
  • How to install Haskell?
  • GHCi
    • Arithmetic expressions
    • Comparison operators
    • Boolean expressions
    • Calling functions
  • Types
    • :t command in GHCi
    • Types of booleans, numbers and functions
  • Lists and operations with them
    • Prepending, concatenation
    • Standard list functions
    • Ranges
  • Laziness
  • String
  • Syntax constructions
    • Defining our own functions
    • packages, modules, imports
    • if-then-else
    • guards
    • let-in
    • where
  • Immutability
  • Recursion
  • Higher-Order Functions (HOF)
    • Functions as first-class values
    • Lambda functions
    • Partial application
    • map, filter, etc.

๐ŸŽž Slides: https://slides.com/haskellbeginners2022/lecture-1

๐Ÿ“ฝ Video: Haskell Beginners 2022: Lecture 1

๐Ÿ— Lecture 2: Data types

  • Pattern-matching
    • Top level
    • case-of
    • List patterns
    • Recursion and pattern matching
    • Pattern matching pitfalls
  • Totality
  • Tuples
  • Algebraic Data Types
    • Product types
    • Sum types
  • Data types in Haskell
    • data
    • Simple product types
    • Records
    • Enumerations
    • Simple sum types
    • Recursive data types
    • type
    • newtype
  • Polymorphism
    • Parametric polymorphism
    • Types of standard functions
    • Hoogle
    • Polymorphic data types
    • Standard polymorphic data types
  • Eta-reduction
  • Function composition: dot operator (.)

๐ŸŽž Slides: https://slides.com/haskellbeginners2022/lecture-2

๐Ÿ“ฝ Video: Haskell Beginners 2022: Lecture 1

๐ŸŽฎ Lecture 3: Typeclasses

  • Parametric polymorphism vs Ad-hoc polymorphism
  • Typeclasses
    • class
    • instance
    • Default methods
    • {-# MINIMAL #-}
    • Small typeclasses vs Big typeclasses
  • Language Extensions
    • {-# LANGUAGE InstanceSigs #-}
  • Standard typeclasses
    • Eq
    • Haskell Equality Table
    • Ord
    • Num
  • deriving
    • Stock derivable typeclasses
    • {-# LANGUAGE GeneralizedNewtypeDeriving #-}
  • Algebraic typeclasses
    • Semigroup
    • Monoid
    • Laws
  • Kinds
  • Functor
  • Folds
    • foldr
    • foldl
    • foldl'
    • foldr vs foldl'
    • Foldable
  • Strict and Lazy evaluation
    • Lazy evaluation
    • Tail Call Optimization (TCO)
    • Equational reasoning
    • {-# LANGUAGE BangPatterns #-}

๐ŸŽž Slides: https://slides.com/haskellbeginners2022/lecture-3

๐Ÿ“ฝ Video: Haskell Beginners 2022: Lecture 3

๐Ÿ”ˆ๐ŸŽค Lecture 4: Monads and IO

  • Monad example
    • andThen for Maybe, Either and list
  • Monad as programming pattern
  • Monad
    • The typeclass
    • Instances
    • Laws
    • Usage example
  • FAMily: Functor, Applicative, Monad
  • Purity
  • Why Purity + Laziness is a problem for sie effects?
  • IO
    • Why does IO require a monad?
    • String vs IO String
    • getLine
    • putStrLn
    • Main and main
  • Then operator: >>
  • do-notation
  • Cabal
    • Packages
    • build-depends
  • Functional Core, Imperative Shell

๐ŸŽž Slides: https://slides.com/haskellbeginners2022/lecture-4

๐Ÿ“ฝ Video: Haskell Beginners 2022: Lecture 4

course-plan's People

Contributors

chshersh avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.