Skip to content
HomeVideos
AllLongsCategoriesPlaylists
BooksBlogsPodcasts
HistoryListsWatch laterLiked videosFollowing

The videos, books, blogs and podcasts Hacker News keeps recommending, all in one place.

VideosBooksBlogsPodcastsAboutPrivacySettings

Data from Hacker News, HackerTube, HackerBooks, HackerBlogs and Open Library. Credits · Not affiliated with Y Combinator.

HomeVideosBooksBlogsPodcasts
Ctrl K

    Hey Underscore, You're Doing It Wrong!

    InfoQ

    9 HN recommenders · recommended in 9 months, 2014–2022

    YouTube

    36:31 · 141K views · May 21, 2013

    Brian Lonsdorf explains why Underscore.js falls short as a functional programming library, then introduces currying, composition and point-free style in JavaScript. He argues for data-last argument ordering.

    A repeatedly recommended introduction to functional JavaScript that explains currying and why data should come last.

    Software Engineering & LanguagesFunctional programmingWeb development
    1. 46:18
      Om Next - David NolenClojureTV44K views • 11 years ago
    2. 54:58
      Keynote - JSON Graph: Reactive REST at NetflixAssociation for Computing Machinery (ACM)41K views • 11 years ago
    3. 1:02:15
      Lambda Calculus - Fundamentals of Lambda Calculus & Functional Programming in JavaScriptFullstack Academy228K views • 9 years ago
    4. 1:07:10
      Brian Beckman: Don't fear the Monadjasonofthel33t415K views • 13 years ago
    5. 11:25
      Monad - FunFunFunction #21Fun Fun Function128K views • 10 years ago
    6. 49:47
      Monads and GonadsGoogle TechTalks148K views • 13 years ago
    7. 31:11
      React.js Conf 2015 - Immutable Data and ReactMeta Developers159K views • 11 years ago
    8. 58:23
      Evan Czaplicki - Let's be mainstream! User focused design in Elm - Curry OnCurry On!82K views • 11 years ago
    9. 41:09
      ClojureScript for Skeptics - Derek SlagerClojureTV72K views • 10 years ago
    10. 1:50:07
      JSON Parser 100% From Scratch in Haskell (only 111 lines)Tsoding205K views • 6 years ago
    11. 53:22
      Ruby Conf 12 - Y Not- Adventures in Functional Programming by Jim WeirichConfreaks66K views • 13 years ago
    12. 1:05:51
      The Functional Programmer's Toolkit - Scott WlaschinNDC Conferences79K views • 7 years ago
    13. 42:31
      "Datafun: a functional query language" by Michael ArntzeniusStrange Loop Conference9.2K views • 9 years ago
    14. 1:02:26
      Solving Problems the Clojure Way - Rafal DittwaldClojure/north87K views • 7 years ago
    15. 34:55
      "Outperforming Imperative with Pure Functional Languages" by Richard FeldmanStrange Loop Conference98K views • 5 years ago
    16. 1:03:29
      Maybe Not - Rich HickeyClojureTV181K views • 7 years ago
    17. 44:43
      Ron Pressler - Pull Push: Please stop polluting our imperative languages with pure concepts-Curry OnCurry On!25K views • 11 years ago
    18. 1:07:22
      Invited Talk - Guy SteeleClojureTV39K views • 9 years ago
    19. 51:40
      Domain Modeling Made Functional - Scott WlaschinNDC Conferences71K views • 9 years ago
    20. 1:14:52
      Effective Programs - 10 Years of Clojure - Rich HickeyClojureTV176K views • 9 years ago

    12 comments from Hacker News

    1. @lrichardsonApr 2014· in “Functional JavaScript, Part 3: apply, call, and the arguments object”

      That is great feedback. I am actually working on creating a "functional" version of the 2048 game, along with my own implementation of the AI solver, as part of this series. Kinda goofy, and maybe not a "real world" situation as much, but should at least show the concepts being applied. I also very much recommend this video by Brian Lonsdorf, titled "Hey Underscore, You're Doing It Wrong!: this video

      Strongly recommendsView on HN
    2. @wizaoJan 2015· in “Lodash v3.0.0”

      There is an excellent talk called "Underscore, you're doing it wrong!". The talk explains how well designed param order with currying leads to very short and expressive code -- and how underscore missed the boat. This aspect of it should be interesting as it's related to this post. It's well worth the watch. this video

      Strongly recommendsView on HN
    3. @r3a1d33pAug 2022· in “Ask HN: Learning Functional Programming in 2022?”

      I find this talk inspiring. Underscore.js got many things wrong for FP: this video . I've read Grokking Simplicity too. It's very approachable book. Highly recommend it for JS/TS developers who want to learn FP!

      Strongly recommendsView on HN
    4. @ignoramousJul 2015· in “Mostly Adequate Guide to Functional Programming in JavaScript”

      You might already be using certain functional programming constructs without being aware of them. Contrary to popular misconception, OOP and functional programming don't have to be mutually exclusive. "Pure" functional programming (ala Haskell) and OOP most certainly are to an extent non-overlapping (since OOP has state+behaviour at its core), and pure fn-languages have no side-effects. High-order function in java don't exist, so one would do : new Thread(new Runnable() { ... }).start(); A builder pattern can be distilled down as a form of partial application (or, currying, if you like. They aren't the same thing, but are very similar): alertDialog .setMessage(...) .setPositiveButtonText(...) .setNegativeButtonText(...) .setPositiveButtonOnClickListener(...) .setNegativeButtonOnClickListener(...) .build() .show() Functors (in OCaml) can be viewed as Java's abstract-generic-classes with dependency injection [0]. Note that functors in different languages mean different things. Monads are tricky to understand [1], I have been led to believe. But if you use the promises API in javascript, then you're using a form of monad [2]. If you're familiar with javascript, have a look at: this video (Hey Underscore, you're doing it wrong!) I think the best way is to read a book on fn-programming. I've heard most people recommend these (pick a language, and choose a book; you cannot go wrong with any of these): Functional DS: [LINK] Real World Haskell: [LINK] Real World OCaml: [LINK] The Joy of

      RecommendsView on HN
    5. @splintercellSep 2017· in “Currying vs. Partial Application (2015)”

      With all due respect, I don't think you understand the purpose of currying and partial application. In your defense, the article merely explains what currying is, but does not explain why you need it. For instance while writing functional Javascript code, I never curry my methods, instead I use helper methods from functional libraries such as lodash or Ramda to curry. Where currying is useful is in cases like this: ```javascript //Definitions const filterUsers = (fieldName, value, users) => //Implementation const sortUsersBy = (fieldName, users) => //Implementation const takeUsers = (count, users) => //Implementation //Without currying UserService .getUsers() .then(users => filterUsers('active', true, users)) .then(users => sortUsersBy('age', users)) .then(users => takeUsers(3, users)); //If these methods were curried UserService .getUsers() .then(filterUsers('active', true)) .then(sortUsersBy('age')) .then(takeUsers(3)); ``` Here is a video which explains proper uses of currying (and does it very well) [1]. Here is another article if your coworker start using functional programming and you want to stop them [2]. 1. this video 2. [LINK]

      RecommendsView on HN