mrpotatoes / professor-frisby-fp

Notes & Code doing the Professor Frisby workshop on egghead.io

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Professor Frisby FP

Code from "Professor Frisby Introduces Composable Functional JavaScript"

Playlist is located here. It is about 112min long so an easy night if you don't take notes. It's taking me significantly longer since I'm taking notes plus working on code.

I think Prof Frisby explains it best when people ask why use these weird words:

"Now, why is it called the semigroup? Why isn't it just called a concatible or something? That is a good question. The idea is semigroups come from abstract algebra and so we are encoding this in our code so we can keep the name the same and understand the laws and properties that come with this mathematical structure rather than just making something up on our own.

  • Professor Frisby (from the transcript)

About

This is supplimental to the egghead.io course. Each lesson directory has a readme with my own thoughts to each lesson. Student's notes if you will. It's in a README.md so you'll see it as soon as you click into each lesson. The code itself is run as a series of tests though package.json. Run the code to see each iteration.

This is NOT a replacement for watching the videos and doing it yourself. This IS supplimental and a way for you to screw around with code so you don't have to write it yourself.

NOTE: There are lessons with an index.js that is included in the index.spec.js. Othertimes it only makes sense to have the index.spec.js.

My other FP Projects

I'm always trying to get better at Functional Programming and I want to go through this course to learn more about it as I'm trying to strengthen my foundation. I am also, very slowly, putting together a guide to functional programming with it's own code as well. You can find that here:

NOTE: This repo will be merged into the other repo at some point after I finish this full playlist AND after i've finished the entirety of my "Algebras (3/47 complete)" section in my wiki/guide.

Commands

Note: Start any of these with yarn or npm run

Command Does? Lesson
test Runs all the tests n/a
test:watch Run all the tests and watch them n/a
lesson 01 --watch lesson 01 tests Create linear data flow with container style types (Box)
lesson 02 --watch lesson 02 tests Refactor imperative code to a single composed expression using Box
lesson 03 --watch lesson 03 tests Enforce a null check with composable code branching using Either
lesson 04 --watch lesson 04 tests Use chain for composable error handling with nested Eithers
lesson 05 --watch lesson 05 tests A collection of Either examples compared to imperative code
lesson 06 --watch lesson 06 tests Create types with Semigroups
lesson 07 --watch lesson 07 tests Semigroup examples
lesson 08 --watch lesson 08 tests Ensure failsafe combination using monoids
lesson 09 --watch lesson 09 tests A curated collection of Monoids and their uses
lesson 10 --watch lesson 10 tests Unbox types with foldMap
lesson 11 --watch lesson 11 tests Delay Evaluation with LazyBox
lesson 12 --watch lesson 12 tests Capture Side Effects in a Task
lesson 13 --watch lesson 13 tests Use Task for Asynchronous Actions
lesson 14 --watch lesson 14 tests You've been using Functors
lesson 15 --watch lesson 15 tests Lift into a Pointed Functor with of
lesson 16 --watch lesson 16 tests You've been using Monads
lesson 17 --watch lesson 17 tests Build curried functions
lesson 18 --watch lesson 18 tests Applicative Functors for multiple arguments
lesson 19 --watch lesson 19 tests Apply multiple functors as arguments to a function (Applicatives)
lesson 20 --watch lesson 20 tests List comprehensions with Applicative Functors
lesson 21 --watch lesson 21 tests Write applicatives for concurrent actions
lesson 22 --watch lesson 22 tests Leapfrogging types with Traversable
lesson 23 --watch lesson 23 tests Maintaining structure whilst asyncing
lesson 24 --watch lesson 24 tests Principled type conversions with Natural Transformations
lesson 25 --watch lesson 25 tests Apply Natural Transformations in everyday work
lesson 26 --watch lesson 26 tests Isomorphisms and round trip data transformations
lesson 27 --watch lesson 27 tests Build a data flow for a real world app
lesson 28 --watch lesson 28 tests Retrieve and use data from an api with pure functional constructs
lesson 29 --watch lesson 29 tests Find the intersection of sets with Semigroups

About

Notes & Code doing the Professor Frisby workshop on egghead.io

License:MIT License


Languages

Language:JavaScript 99.4%Language:Shell 0.6%