The goal of the GenServer is to be generic and the functionality you ask for is already possible, so I prefer to stick with the generic APIs we have so far.
Furthermore, introducing a new word also has downsides. Newcomers already wonder about call vs cast vs info, adding a new word will make things more confusing, and we won't get anything new out of it. I personally can't think of any optimization that would be possible with such callback. *José Valimwww.plataformatec.com.br <http://www.plataformatec.com.br/>Founder and Director of R&D* On Tue, Jan 30, 2018 at 3:25 PM, Ben Wilson <[email protected]> wrote: > Have you evaluated an Agent for your purposes? It has basically exactly > this function. > > On Tuesday, January 30, 2018 at 9:17:08 AM UTC-5, Federico Bergero wrote: >> >> Hi all, >> I'm proposing a new GenServer callback `query` similar to the >> call but which does not change the process state. >> I find myself writing a lot of `handle_call` callbacks like >> >> def handle_call(request, _from, state) do >> ... >> ... >> {:reply, result, state} >> end >> >> >> >> >> with the `handle_query` this could be written as >> >> def handle_query(request, _from, state) do >> ... >> ... >> {:reply, result} >> end >> >> >> This is easier to read and write. >> >> A common use case is when you need some computation that depends on the >> GenServer state. Another is when the GenServer has a side effect and the >> calls to the server does not changes the actual process state but an >> external component. >> >> >> Together with the callback a new GenServer.query function should be >> implemented which calls the callback on the server context. >> >> I'm not familiar with the internals of the compiler/GenServer but this >> could also bring optimization opportunities. >> > -- > 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 [email protected]. > To view this discussion on the web visit https://groups.google.com/d/ > msgid/elixir-lang-core/249e8c65-c2a2-4cbc-9956- > 1868d68b022f%40googlegroups.com > <https://groups.google.com/d/msgid/elixir-lang-core/249e8c65-c2a2-4cbc-9956-1868d68b022f%40googlegroups.com?utm_medium=email&utm_source=footer> > . > > For more options, visit https://groups.google.com/d/optout. > -- 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 [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/elixir-lang-core/CAGnRm4Koo0LRU9J8Eiwy0T1-NZZx96mJved%2BAQ-LPQ1KwPH9YQ%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
