Giter Site home page Giter Site logo

tosen1990 / fp-foundation Goto Github PK

View Code? Open in Web Editor NEW

This project forked from abdheshkumar/fp-foundation

0.0 2.0 0.0 2.51 MB

Foundation of functional programming course

Home Page: https://julien-truffaut.github.io/fp-foundation/index.html#1

License: Creative Commons Attribution Share Alike 4.0 International

Scala 58.18% HTML 41.82%

fp-foundation's Introduction

FP Foundation Logo

Join the chat at https://gitter.im/julien-truffaut/fp-foundation Patreon donate button

Synopsis

Chapter 1: Function

  • Pure functions
  • Polymorphic functions
  • Higher-order functions
  • Recursion
  • Memoization

Chapter 2: Type

  • Cardinality
  • Algebra of types
  • Types and Tests, Valid Implementation Count (VIC)
  • Parametricity
  • Logic and types

Chapter 3: Typeclass

  • Different implementations of ad-hoc polymorphism
  • Eq, Monoid
  • Typeclass laws
  • Instance uniqueness, location
  • Typeclass hierarchy with Semigroup, CommutativeMonoid
  • Use case with distributed computing (e.g. Spark)
  • Higher kinded typeclass with Foldable
  • Typeclass abuses

Chapter 4: Functors WIP

  • Functor, Applicative, Monad
  • Combining effects
  • Typeclass consistency
  • Traverse
  • Typeclass granularity

Chapter 5: IO / Effects

Chapter 6: Error Handling

Chapter 7: Reader / Writer / State

FAQ

Where should I start?

Each chapter has:

  • a set of slides (linked above) located at docs/$chapter.html
  • a scala object containing all exercises located at exercises/src/main/scala/exercises/$chapter/$chapterExercises.scala
  • a scala object containing all answers located at exercises/src/main/scala/answers/$chapter/$chapterAnswers.scala
  • two test suites (one for exercises, one for answers) located at exercises/src/test/scala/exercises/$chapter/$chapterTest.scala

Start each chapter with the slides, at some point you will be prompted to work on some exercises. Do the exercises and check your answers are correct by running the tests for this chapter. Finally, go back to the slides and repeat the process. If you have any question, please ask them on gitter.

How to run the tests?

sbt "testOnly $CHAPTER*ExercisesTest"

For example for chapter 1

sbt "testOnly function*ExercisesTest"

Is this course free?

Yes, the material is open source and it uses a permissive licence CC-BY-SA-4.0. However, the slides and exercises are currently made to be run by a trainer. Eventually, we aim to make this course self-study with online videos but it is not likely to happen before mid 2020.

We do encourage people who enjoy the course to make a donation using patreon.

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.