[Haskell'23] The Evolution of Effects

  Рет қаралды 4,985

ACM SIGPLAN

ACM SIGPLAN

6 ай бұрын

The Evolution of Effects (Keynote) (Video, Haskell 2023)
Nicolas Wu
(Imperial College London, UK)
Abstract: Functional programming has been celebrated for its promise of pure functions, delivering referential transparency and elegant reasoning about programs. However, real-world applications are not pure, and necessitate interaction with the outside world, introducing computational effects such as IO, state, and exceptions. The journey to harmonize these seemingly contradictory paradigms has led to a fascinating evolution of effectful programming in Haskell.
The introduction of monads as a practical programming tool was a pivotal discovery, enabling controlled sequencing of effectful computations and addressing the challenge of handling side effects in a pure language. However, it soon became evident that the lack of modularity in composing effects using monads posed a limitation to effectful programming. To overcome this obstacle, monad transformers emerged as a solution, providing a composable manner of building effects on top of one another.
More recent advancements have led to algebraic effects as an alternative framework that is easy to extend, particularly as domain-specific languages crafted to work in specific contexts. Nevertheless, these effects are not without quirks and limitations, leading to the development of higher-order effects. These higher-order effects extend the capabilities of algebraic effects, providing greater flexibility for expressing effectful computations, while also shedding light on the connection between the monad approach and the algebraic approach to effects.
This talk will survey the historical milestones that have shaped the landscape of effectful programming in Haskell, exploring the transition from monads to monad transformers and the emergence of algebraic and higher-order effects.
Article: doi.org/10.1145/3609026.3615581
ORCID: orcid.org/0000-0002-4161-985X
Video Tags: icfpws23haskellmain-key2-p, doi:10.1145/3609026.3615581, orcid:0000-0002-4161-985X
Presentation at the Haskell 2023 conference, September 8-9, 2023, icfp23.sigplan.org/home/haske...
Sponsored by ACM SIGPLAN, www.sigplan.org/

Пікірлер: 12
@paryoticu
@paryoticu 6 ай бұрын
Terrific presentation.
@mskiptr
@mskiptr 6 ай бұрын
I've actually found a use for the backwards state monad once. And I didn't even know about it at the time. For an information theory class we were tasked with implementing some compression algorithms. Since we were free to choose the language - and I was very much into Haskell at the time - I picked that. I wanted the implementation to be single-pass. I don't remember the full details, but since there were cases where the algorithm would need to look up things in its future output and that sort of thing is possible with lazy data structures I started looking around how to do that with the State type. Ultimately I arrived at Control.Monad.Tardis which provides "the time-traveling monad". It provides two states: one wired-up normally and one going backwards.
@federicoagustinsawadyoconn2716
@federicoagustinsawadyoconn2716 9 күн бұрын
It took me a week to watch the whole video 🤣, thanks for all this and excellent talk.
@statebased
@statebased 6 ай бұрын
I loved the "row type" comment. I tried many years ago to write my own effect aware language compiler with row types, but got blocked by complexity. Still, this did teach me that formulating coeffects was "easier" than working with effects. Something I still believe.
@asdfghyter
@asdfghyter 6 ай бұрын
thank you! very helpful history lesson!
@GrzegorzMilka
@GrzegorzMilka 6 ай бұрын
Excellent talk
@worgenzwithm14z
@worgenzwithm14z 5 ай бұрын
Imagine giving a presentation about Haskell and you get a question from Simon 🤣
@vpatryshev
@vpatryshev 25 күн бұрын
Seems like you've mixed up applicative functor (aka closed functor) and state monad.
@laughingvampire7555
@laughingvampire7555 2 ай бұрын
summary: monads were too much, maybe Lisp was onto something. Lispers: the right answer has always been Lisp
@meme_gawd
@meme_gawd 6 ай бұрын
We start in Church
@korigamik
@korigamik 3 ай бұрын
You getting married?
@Wabbajack-kj2kg
@Wabbajack-kj2kg 2 ай бұрын
Where all the magic begins.
[Haskell'23] Effect Handlers for Programmable Inference
26:24
The Death of Monads? Direct Style Algebraic Effects
17:13
Impure Pics
Рет қаралды 15 М.
КАРМАНЧИК 2 СЕЗОН 5 СЕРИЯ
27:21
Inter Production
Рет қаралды 586 М.
格斗裁判暴力执法!#fighting #shorts
00:15
武林之巅
Рет қаралды 89 МЛН
The Absolute Best Intro to Monads For Software Engineers
15:12
Studying With Alex
Рет қаралды 563 М.
What is IO monad?
36:32
Tsoding
Рет қаралды 66 М.
lunch&LEARN: Computational thinking assessment
24:48
EPFL Center LEARN
Рет қаралды 1
A unifying force (2024): an Abdus Salam documentary
14:43
Imperial College London
Рет қаралды 97 М.
Monads are everywhere... Maybe that's bad? by Till Schröder
50:59
Func Prog Sweden
Рет қаралды 27 М.
Social Behaviour in Dinosaurs - with David Hone
33:11
The Royal Institution
Рет қаралды 331 М.
Haskell Lenses From Scratch
22:11
The Haskell Goose
Рет қаралды 7 М.
Laziness in Haskell - Part 1: Prologue
14:47
Tweag
Рет қаралды 8 М.
George Wilson - The Extended Functor Family
21:57
Compose Conference
Рет қаралды 15 М.
3D printed Nintendo Switch Game Carousel
0:14
Bambu Lab
Рет қаралды 4,7 МЛН
Samsung or iPhone
0:19
rishton vines😇
Рет қаралды 9 МЛН
как спасти усилитель?
0:35
KS Customs
Рет қаралды 510 М.
😱НОУТБУК СОСЕДКИ😱
0:30
OMG DEN
Рет қаралды 2,6 МЛН
Теперь это его телефон
0:21
Хорошие Новости
Рет қаралды 1,7 МЛН