Skip to content
0:00 / 0:00

#catseffect#monads#effects

Functional Programming with Effects by Rob Norris

Scala Days Conferences

10K subscribers • 21 videos on Hallway

YouTube
  • Recommended by 6 people: 6 in engineering communities.
  • A classic. People kept recommending it from 2018 to 2024.
  • Presented by Rob Norris

Intermediate. Assumes working knowledge.

28K views8 years ago6 recommendations

Programming languagesSoftware designScalaFunctional programmingConcurrency and parallelism

Rob Norris explains the concept of effects in functional programming and how they are managed in Scala.

This video was recorded at Scala Days New York 2018 Follow us on Twitter @ScalaDays or visit our website for more information scaladays.org More information and the abstract can be found here: na.scaladays.org/schedule/functional-programming-with-effect…

Why it's here

6 people recommend this

What people say. Highly recommended by Scala developers as one of the best and clearest introductions to functional programming effects.

Moments people linked to

u/amazedballerin r/scala • Recommends

On “Help me understand about effects”

Rob Norris has probably the best introduction.

u/DisruptiveHarbingerin r/scala • Recommends

On “Why Effects libs?”

You'll find several talks on YouTube that explain the why, e.g. * [video * [video From a more practical point of view, in a typical web service I want at least: * Resource acquisition and release * Concurrent IO, either async or blocking * Streaming * Parallelization sometimes Cats Effect and Zio provide a nice API to achieve that without shooting myself in the foot, unless I really try hard to. Regarding function coloring, you mentioned Akka, it's fundamentally the same. As soon as you touch Akka you have Futures everywhere. In both cases you have pure functions and the plumbing wrapped in a monad, and Scala's own Future is the least pleasant to work with.

u/justinhjin r/scala • Recommends

On “Best Scala/FP talks”

What topics are you interested in specifically? Some I've been rewatching recently... John de Goes: One Monad to Rule Them All [video Fabio Labella—How do Fibers Work? A Peek Under the Hood [video And a couple of other classics... Luka Jacobowitz—Monoids, Monoids, Monoids [video Functional Programming with Effects by Rob Norris [video

u/Plippein r/scala • Recommends

On “Explaining monad (or functional programming, or ScalaZ, etc.) tutorials be like...”

Forgot to add a few great resources: * Functional Programming with Effects by Rob Norris - [video * John De Goes - FP to the Max - [video * Functional Structures in Scala - [video * Book: Functional Programming in Scala * Book: Functional Programming, Simplified: (Scala Edition) (haven't read it yet) * Book: Category Theory for Programmers (haven't read it yet) And a shameless plug for my intro to cats: https://medium.com/@pvinchon

u/ShanShrewin r/typescript • Recommends

On “Effect: Next-Generation Typescript”

…that's not the case. In fact I think it's pretty clear that the **for most use cases** people have rejected this idea entirely taking from Haskell what the ideas they see as having the most merit and discarding those they see as not. === Some references === (Monads **are for effects**) - (my favorite human in the Scala community Rob Norris) link to this video https://goto.ucsd.edu/\~nvazou/koka/padl16.pdf (The problem with Monads, inability to compose and Box<Box<Box<Box<T>>> problems) link to this video…

u/koopa1844in r/scala • Recommends

On “A monad is not a burrito”

The Reader monad is useful for composing computations that all depend on a shared value of a certain type, often called the *environment*. For example, say you had some code that talks to your database, and it uses a connection. You have multiple methods in this section of code that all depend on having a connection, and ideally you'd like to call multiple methods in turn (sometimes using the results from previous methods in the input for new ones) and pass them all the same connection object. You could add the connection as a parameter to all of the methods, and manually pass the same connection through all of them as you write your code. But that's a bit cumbersome, and sort of obscures y…
2View on Reddit