I’ve seen that a new “range-over-func” experiment is available with Go 1.22. In this article, I took a closer look and evaluated the feature for myself.

  • icb4dc0de@programming.dev
    link
    fedilink
    arrow-up
    3
    ·
    10 months ago

    I think this https://github.com/golang/go/discussions/56413 is the discussion.

    Also an interesting read from Russ Cox: https://research.swtch.com/coro

    I’d like to add that in my perception you’re a little bit overreacting. I can’t say that I got the same impression that you apparently got from the first comment. To me it sounds as if it’s primarily about missing some depth and could use some more advanced examples - especially when compared to the post Russ Cox wrote 😅 no offense!

    • codesoap@feddit.deOP
      link
      fedilink
      arrow-up
      1
      arrow-down
      2
      ·
      10 months ago

      Maybe I’m a little tired. I’ve argued a lot about this on reddit as well and have become a bit frustrated with people telling me I’m missing things, without being able to actually provide any convincing real world examples. It’s not my goal to cause drama or offend anyone. Sorry, if I came across a little cranky.

      Thanks for linking some resources! I’ll take a look and see if I can find some compelling arguments there.

      • icb4dc0de@programming.dev
        link
        fedilink
        arrow-up
        2
        ·
        edit-2
        10 months ago

        I can imagine how…exhausting these discussions were 😅

        Apart from the more synthetic examples and the obvious things like iterating custom containers - I understand your argument that this is not a every day use case but there are certainly some use cases - there are things like:

        • iterating a bufio.Scanner
        • iterating SQL results
        • streaming chunked HTTP results

        That can benefit from the range-over-func approach.

        Furthermore there’s another “class” of tasks that are quite a good fit: generators 😍 Think of an infinite slice of random numbers or Fibonacci numbers or prime numbers…all of this can be expressed as a function you can iterate and “just stop” as soon as you have enough.

        Probably this gives you an idea what else the whole experiment is good for 😉

        Edit: there’s for instance a Python library letting you generate the holidays of a state for the next 1000 years based on some algorithm without having the data pre-calculated/stored anywhere but you can iterate/filter/… whatever you want