Blog Post

Erik Meijer - Functional Programming From First Principles

Download this episode

Download Video

Description

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.

Embed

Format

Available formats for this video:

Actual format may change based on video formats available and browser capability.

    The Discussion

    • User profile image
      exoteric

      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.

    • User profile image
      N2Cheval

      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...?

    • User profile image
      Giorgio

      Is there a URL for the slides?

    • User profile image
      Charles

      @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

    • User profile image
      Richard.Hein

      , N2Cheval wrote

      *snip*


      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

    • User profile image
      Heavens​Revenge

      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

    • User profile image
      Charles

      Is there a URL for the slides?


      Here you go. Thanks, Erik!

      C

    • User profile image
      CbrAInK

      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

    • User profile image
      LiquidBoy

      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

    • User profile image
      SlowInternet​Guy

      Please compress the media to reasonable sizes.

    • User profile image
      Charles

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

      C

    • User profile image
      Will48

      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. 

    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.