Loading user information from Channel 9

Something went wrong getting user information from Channel 9

Latest Achievement:

Loading user information from MSDN

Something went wrong getting user information from MSDN

Visual Studio Achievements

Latest Achievement:

Loading Visual Studio Achievements

Something went wrong getting the Visual Studio Achievements

Erik Meijer - Functional Programming From First Principles

51 minutes, 28 seconds


Right click “Save as…”

Our favorite iconoclast, Erik Meijer, presented a very interesting talk at a recent GOTO Chicago event, Functional Programming Night. He originally planned on doing his popular "Fundamentalist Functional Programming" talk, but instead decided to address FP from a slightly different angle - "Functional Programming from First Principles". (Speaking of FP first principles, if you haven't seen Erik's FP lecture series, well, you really should!).

Has Erik changed his mind about rampant side effects and imperative programming? What's going to happen to the poor monkey Rich Hickey made reference to several times in his excellent talk The Database as a Value (which he presented after Erik's talk)? Is Erik still a functional programming fundamentalist? Watch and decide. As you'd expect, it's high energy, brilliant Erik all the way.

Get Erik's slides.

Tune in. Enjoy.


Follow the discussion

  • Oops, something didn't work.

    Getting subscription
    Subscribe to this conversation
  • Bent Rasmussenexoteric stuck in a loop, for a while

    Did Anders do a destructive update of Erik?  Cool

    Quick, somebody rollback the transaction or restore from backup tape! 

    Maybe Brian can "reach" into the 11-th dimention and pull out a non mutant Erik X-Meijer or timewarp to the past and back.

    Alright. Jokes aside, there is a lot to think about in this stimulating talk so I'll watch it again this weeend.

  • ChevalN2Cheval Why not null?

    exoteric wrote

    Did Anders do a destructive update of Erik?  Cool

    Are you suggesting Erik needs some "Datomic" in his life? Where the latest version forgot his previous understandings...?

  • GiorgioGiorgio

    Is there a URL for the slides?

  • CharlesCharles Welcome Change

    @Giorgio: Working on it.

    PS: I had to adjust RGB and brightness in post production. I decided it's better to see Erik than not. The slides are mostly readable in the end result, but maybe I should have an expert fiddle with the video editing Smiley

  • AuxonRichard.Hein Read it: ​http://bitc​oin.​org/bitcoin.​pdf

    , N2Cheval wrote


    Are you suggesting Erik needs some "Datomic" in his life? Where the latest version forgot his previous understandings...?

    At first Erik sounds controversial, like he's given up on functional programming ... but the bridge of imperative and functional ... that's what I thought LINQ and Rx were all about all along.  Strive for purity, but we also have to make side-effects explicit and controllable. 

    Tying Task and Lazy into the picture in the way you have, Erik, seems really good.  Does this mean Task<T> can be implemented through ManySelect?

    I'm not sure if I believe reality is actually truly imperative, once you add time into the mix, but I get the point.  We can't time travel, so we are stuck for now. Wink

  • Eric AguiarHeavens​Revenge Know Thyself

    If you want to see the slides until Charles works something out (as I honestly don't care to see Erik and is far more interested in what he's saying + the presentation) open one of the video file links in VLC and use "Effects and Filters" on the video to crank up the contrast and lower the brightness to see the slides quite clearly Smiley

  • CharlesCharles Welcome Change

    Is there a URL for the slides?

    Here you go. Thanks, Erik!


  • CKoenigCbrAInK Carsten

    I don't think Erik went to the dark ... err imperative ... side - you just have to adapt to your audience: "GOTO Chicago is a premier software development conference designed for team leads, architects, and project managers." Devil

  • LiquidBoyLiquidBoy Silverlight

    After you watch Erics great talk take time to read this patent "TYPE SYSTEM SUPPORT FOR MEMORY ISOLATION PERMISSIONS"  - lots of what he mentions in his talk is in this patent, side-effects and all Smiley  http://www.google.com/patents?id=bwzYAAAAEBAJ&zoom=4&pg=PA4#v=onepage&q&f=false

  • SlowInternetGuySlowInternet​Guy

    Please compress the media to reasonable sizes.

  • CharlesCharles Welcome Change

    @SlowInternetGuy: Please look under where the Download section, right next to the player........


  • I must say I'm really flabbergasted by this. The world of course is immutable.  You can not change anything. If 5 minutes ago x was equal to 5, you can not change this fact, in the real world. But in imperative programming, you can. You just write x=15. Does this act of re-writing a register changes the fact that it had 5 stored in it just a flicker ago? Of course not. You just choose to forget about it. You don't care.

    The real difference between mutable and immutable is the explication of time, which is part of the immutable mode of programming. Everything gets tagged with its time ultimately, and so there's no source for any confusion at all.The only reason imperative programs get confused is because they drop the time tags and hope for the actual execution in actual silicon to be somehow magically in-sync.

    Of course that's silly.

    I'm amazed why would anyone get intentionally confused by that simple example that Erik provides, of storing the value enumerated in a foreach loop, in a list. You just must understand first order principles first, like value vs reference, and understand the semantics of your language. What point is there to using a language if you don't understand its semantics????

    What you're storing in a list there, is _reference_, not value. That is all there is to it. No mysteries there. And since you store a reference that will be looked up later, of course you must understand what scope it is from, and whether it gets reused or a new one is created each time.

    This is really a beginner stuff for anyone proficient in Scheme or Lisp. It has been so, for the last 30-40 years, since the "FUNARG problem" was formulated, and solved. Oh, and "func" is pronounced "thunk" really. 

    It's just shocking to me, what I just heard in this talk. I'm half-way through by now. Shocking. 

Remove this comment

Remove this thread


Comments closed

Comments have been closed since this content was published more than 30 days ago, but if you'd like to continue the conversation, please create a new thread in our Forums, or Contact Us and let us know.