DISQUS

pl patterns: Programming Concepts People Just "Don't Get"

  • josh · 1 year ago
    I don't understand how monads are more useful than HOFs. I read that explanation of Monads being like factory machines that move boxes around, and I thought I understood it pretty well, but I don't understand what practical benefit they have. I have heard that they allow programs to do IO and still be purely functional, but I don't buy that yet, because the non-referentially-transparent IO still has to be somehow absorbed into the program. I would love to see more examples of them. Continuations sound really cool, but I don't know what I'd ever use them for. I would love even more to see some good examples of them.
  • Kyle Burton · 1 year ago
    Monads are something that I know I don't yet grok and want to. Continuations are another. I have an idea of what they are and how they can be used, but I could not clearly articulate them to someone else. I'm also looking for the other stuff that I can't see, you're one of the people who is helping me with that.

    This was good, make more like this, keep this going.
  • Mat Schaffer · 1 year ago
    I don't get grasp how to structure application data for de-normalized storage (e.g., BigTable, HBase). My brain instantly jumps to building entity relationships which I'm sure don't hold up in that model.
  • Jonathan Tran · 1 year ago
    I don't mean to make experts out of people on these topics. That takes time and experience.

    If you (or others?) don't understand the concept of BigTable or column-oriented storage, that's one thing. And I could try to show it to people so that they grasp it enough to evaluate its use in a given situation.

    But if you already know what it is, you're just not that good with it, I would say... practice!
  • Mat Schaffer · 1 year ago
    That's fair. I'm sure I could use some practice, but I think de-normalized, amortized over write storage is something that's still tricky for folks that came into software development over the past few years. Myself included.
  • Jedai · 1 year ago
    Monads, more useful than HOFs ? That doesn't really make sense since HOF are needed to do Monads.

    A lot of computations pattern are in reality monads, once you've understood that, you realize that expressing them like monads often make them easier to understand or manipulate. And in language with a powerful type system like Haskell, you immediately get the benefits of a lot of functions that can be applied to any monad for free. As well as a pretty cool syntax sugar (do-notation).

    Nice ! Isn't it ?

    (As for the IO question, it is true that with an IO monad the programs are still written in a pure functional style, in fact, rather than do IO, they construct an IO computation, which is an abstract, pure structure. The impure part doesn't appear until the runtime starts translating this IO computation to real Input/Output. Of course to be efficient the IO computation is executed at the same time it is built, but conceptually, we stay pure, which is important to keep the potential for optimisation it give us)
  • Jonathan Tran · 1 year ago
    For reference, I asked Reddit. Interesting...
  • Jonathan Tran · 1 year ago
    I haven't forgotten about this. A few topics I will definitely cover based on feedback: closures, currying, monads, and continuations. I will also talk about the CSS box model, staging, and aspect-oriented programming.

    Please, keep pushing me to do this!
  • Rob Di Marco · 1 year ago
    I have no idea what the Semantic Web really means. I find it more confusing then Web 2.0.
  • Jonathan Tran · 1 year ago
    Yes, I can see how it can be confusing. Web 2.0 vs. semantic web vs. Semantic Web (capitalized) vs. Web 3.0.

    I haven't heard anyone else mention this. I may have unintentionally excluded some topics though by saying "programming concepts". ... I'll see what I can do, but I think I've accumulated enough topics for one presentation.