[Haskell'23] The Evolution of Effects

Поділитися
Вставка
  • Опубліковано 29 лис 2023
  • 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/
  • Наука та технологія

КОМЕНТАРІ • 11

  • @paryoticu
    @paryoticu 6 місяців тому +9

    Terrific presentation.

  • @mskiptr
    @mskiptr 6 місяців тому +13

    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 Місяць тому

    It took me a week to watch the whole video 🤣, thanks for all this and excellent talk.

  • @statebased
    @statebased 6 місяців тому +2

    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.

  • @worgenzwithm14z
    @worgenzwithm14z 6 місяців тому +5

    Imagine giving a presentation about Haskell and you get a question from Simon 🤣

  • @asdfghyter
    @asdfghyter 6 місяців тому

    thank you! very helpful history lesson!

  • @GrzegorzMilka
    @GrzegorzMilka 6 місяців тому

    Excellent talk

  • @vpatryshev
    @vpatryshev Місяць тому

    Seems like you've mixed up applicative functor (aka closed functor) and state monad.

  • @laughingvampire7555
    @laughingvampire7555 3 місяці тому +2

    summary: monads were too much, maybe Lisp was onto something.
    Lispers: the right answer has always been Lisp

  • @meme_gawd
    @meme_gawd 6 місяців тому +2

    We start in Church

    • @korigamik
      @korigamik 4 місяці тому +5

      You getting married?