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) in it.
This is the new
2024
version of this course.
The original version of it can be found on the2019
branch.
scalaintro
This package contains notes for introduction to the Scala Programming Language.Expressions.scala
- Expressions and Values.ClassesMethodsFunctions
- Classes, Methods, and Functions. As well as an introduction to ADTs,Option
,Either
, andTry
.Collections
- Introduction to basic collection types:List
,Array
,ArraySeq
,Vector
,Set
, andMap
.Combinators
- Introduction to common combinators:sum
,contains
,find
,exists
,forall
,filter
,map
,collect
,collectFirst
,flatMap
,foldLeft
,foldRight
,groupMapReduce
; and implement them forList
using recursion or other combinators.Typeclasses
- Brief showcase of typeclasses and cats.
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