An open API service indexing awesome lists of open source software.

https://github.com/balmungsan/scala-functional-programming-tutorial

Functional Programming in Scala Tutorial
https://github.com/balmungsan/scala-functional-programming-tutorial

cats cats-effect circe fp fs2 functional-programming http4s scala shapeless tutorial

Last synced: 6 months ago
JSON representation

Functional Programming in Scala Tutorial

Awesome Lists containing this project

README

          

# Functional Programming in Scala Tutorial

This repo contains the notes of the functional programming hotbed of research of the _Universidad **EAFIT**_.
This is intended to be a simple introductory tutorial to **Scala** in general and to Functional Programming
_(using the [Typelevel stack](https://typelevel.org/projects))_ in it.

-----

> This is the new `2024` version of this course.

> The original version of it can be found on the [`2019` branch](https://github.com/BalmungSan/scala-functional-programming-tutorial/tree/2019).

-----

## Contents

1. `scalaintro` This package contains notes for introduction to the **Scala** Programming Language.
1. `Expressions.scala` - Expressions and Values.
2. `ClassesMethodsFunctions` - Classes, Methods, and Functions. As well as an introduction to ADTs, `Option`, `Either`, and `Try`.
3. `Collections` - Introduction to basic collection types: `List`, `Array`, `ArraySeq`, `Vector`, `Set`, and `Map`.
4. `Combinators` - Introduction to common combinators: `sum`, `contains`, `find`, `exists`, `forall`, `filter`, `map`, `collect`, `collectFirst`, `flatMap`, `foldLeft`, `foldRight`, `groupMapReduce`; and implement them for `List` using recursion or other combinators.
5. `Typeclasses` - Brief showcase of typeclasses and **cats**.

## Bibliography

The following is a list of bibliographic material used for this tutorial.

+ Underscore - **Scala with Cats**, Book. https://underscore.io/books/scala-with-cats
+ Underscore - **Playing type tetris**, Blog. https://underscore.io/blog/posts/2017/04/11/type-tetris.html
+ Typelevel - **There are more types than classes**. https://typelevel.org/blog/2017/02/13/more-types-than-classes.html
+ Typelevel - **Cats**, Website. https://typelevel.org/cats
+ Typelevel - **Cats Effect**, Website. https://typelevel.org/cats-effect
+ Fabio Labella _(SystemFw)_- **Programs as Values**, Blog. https://systemfw.org/archive.html
+ Rob Norris _(tpolecat)_ - **Functional Programming with Effects**, Conference talk. https://slideslive.com/38908886/functional-programming-with-effects
+ Rob Norris _(tpolecat)_ - **Introduction to Typeclasses in Scala**, Blog. https://tpolecat.github.io/2013/10/12/typeclass.html
+ Gavin Bisesi _(Daenyth)_ - **Intro to Cats-Effect**, Conference talk. https://github.com/daenyth/intro-cats-effect
+ Ryan Peters _(sloshy)_- **Streams - Your New Favorite Primitive**, Conference talk. https://www.youtube.com/watch?v=BZ8O6T7Y1UE
+ DevInsideYou - **Monads**, Youtube playlist. https://www.youtube.com/playlist?list=PLJGDHERh23x-9bxGrCbyX-tXJG99XczNC
+ Philip Schwarz - **The Monad Fact Slide Deck Series**, Slides. https://www.slideshare.net/pjschwarz/the-monad-fact-slide-deck-series-229474965
+ Scala Lang - **Tour of Scala**, Docs. https://docs.scala-lang.org/tour/tour-of-scala.html
+ Scala Lang - **Where Does Scala Look For Implicits?**, Docs. https://docs.scala-lang.org/tutorials/FAQ/index.html#where-does-scala-look-for-implicits
+ Scala Lang - **What’s the difference between methods and functions?**, Docs. https://docs.scala-lang.org/tutorials/FAQ/index.html#whats-the-difference-between-methods-and-functions
+ Scala Lang - **Scala Standard Library - API**, Scaladoc. https://scala-lang.org/api/3.3_LTS/
+ Luis Miguel Mejía Suárez _(BalmungSan)_ - **Polymorphism in Scala**. https://gist.github.com/BalmungSan/c19557030181c0dc36533f3de7d7abf4
+ Scala Community - **A relaxed chat room about all things Scala**, Discord Channel. https://discord.com/invite/scala