Peanut gallery here. Perhaps I'm just not doing something right, but personally I prefer to avoid anon functions wherever possible because it makes finding things in debugging much harder as the line numbers aren't as clear as with a named function.

-Brandon

On 12/13/24 1:53 PM, Juan Manuel Azambuja wrote:
Hello!

Decided to take at stab at adding then_if, here is a branch in case anybody is curious to try it out. https://github.com/elixir-lang/elixir/compare/main...juanazam:elixir:juanazam_add_then_if?expand=1 I decided to follow Zach's approach and use to anonymous functions, I still have my doubts if using a plain condition would work best, I may try that later.

Screenshot 2024-12-13 at 5.52.56 PM.png

El martes, 10 de diciembre de 2024 a las 7:21:34 UTC-3, and...@andrewtimberlake.com escribió:

    apply_if/3 ?

    On December 6, 2024, Ben Wilson <benwil...@gmail.com> wrote:

        Exploring what that looks concretely in this case:

        ```
        map
        |> other_stuff
        |> then_if(opts[:foo], &Map.put(&1, :key, value))
        ```

        I like it! Conditional map insert helper functions are
        definitely something we've written over and over again in our
        code bases and while it's easy to do, I think in some cases
        this is cleaner looking than a proliferation of
        `maybe_put_foo` functions.

        - Ben


            On Friday, December 6, 2024 at 9:59:40 AM UTC-5 José Valim
            wrote:

            Hi Juan!

            My initial gut feeling is that this approach does not
            scale. What if you want to delete a key conditionally?
            Should we have delete_if?

            It feels a more general approach would be to introduce
            `then_if`:

            then_if(subject, condition?, function)

            Or similar. :)

            *
            *José Valim*
            https://dashbit.co/
            *


                On Fri, Dec 6, 2024 at 3:27 PM Juan Manuel Azambuja
                <ju...@mimiquate.com> wrote:

                Hello,

                After working with Elixir for some time I have found
                myself repeating some patterns when dealing with maps.

                One pattern I see repeated constantly in different
                apps developed by myself or others is adding values to
                a map conditionally or returning the map unchanged.
                This comes in different flavors:


                or




                When this pattern gets used enough in an app, it's
                normal to see it abstracted in a MapUtils module that
                updates the map conditionally if a condition is met or
                returns the map unchanged otherwise.

                My proposal is to include Map.put_if/4 which would
                abstract the condition check and return the map
                unchanged if the condition is not met:



                Enhancing the API by doing this will result in less
                code and more readable solutions.

                Thanks for reading!

-- You received this message because you are subscribed
                to the Google Groups "elixir-lang-core" group.
                To unsubscribe from this group and stop receiving
                emails from it, send an email to
                elixir-lang-co...@googlegroups.com.
                To view this discussion visit
                
https://groups.google.com/d/msgid/elixir-lang-core/ed7da716-b9f5-4f64-a77d-d32696326b9en%40googlegroups.com
                
<https://groups.google.com/d/msgid/elixir-lang-core/ed7da716-b9f5-4f64-a77d-d32696326b9en%40googlegroups.com?utm_medium=email&utm_source=footer>.


-- You received this message because you are subscribed to the
        Google Groups "elixir-lang-core" group.
        To unsubscribe from this group and stop receiving emails from
        it, send an email to elixir-lang-co...@googlegroups.com.

        To view this discussion visit
        
https://groups.google.com/d/msgid/elixir-lang-core/e9e799a2-ad69-4791-bd9a-22bca327652fn%40googlegroups.com
        
<https://groups.google.com/d/msgid/elixir-lang-core/e9e799a2-ad69-4791-bd9a-22bca327652fn%40googlegroups.com?utm_medium=email&utm_source=footer>.

--
You received this message because you are subscribed to the Google Groups "elixir-lang-core" group. To unsubscribe from this group and stop receiving emails from it, send an email to elixir-lang-core+unsubscr...@googlegroups.com. To view this discussion visit https://groups.google.com/d/msgid/elixir-lang-core/a290865f-d87e-445c-a7e9-59bda8eb29c2n%40googlegroups.com <https://groups.google.com/d/msgid/elixir-lang-core/a290865f-d87e-445c-a7e9-59bda8eb29c2n%40googlegroups.com?utm_medium=email&utm_source=footer>.

--
You received this message because you are subscribed to the Google Groups 
"elixir-lang-core" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to elixir-lang-core+unsubscr...@googlegroups.com.
To view this discussion visit 
https://groups.google.com/d/msgid/elixir-lang-core/4ffa9e8a-fe1b-4f16-8099-592a3464368a%40cold.org.

Reply via email to