If the choice is between: value |> Tuple.wrap() |> Tuple.insert_at(0, :ok)
and {:ok, value} I believe we should choose the second every time. If the choice is between: value |> very() |> long() |> pipeline() |> Tuple.wrap() |> Tuple.insert_at(0, :ok) and: value |> very() |> long() |> pipeline() |> OkError.ok() and: var = value |> very() |> long() |> pipeline() {:ok, var} I don't see any reason why we should ever do the first one. So I really don't see which problem Tuple.wrap is supposed to solve. *José Valim* www.plataformatec.com.br Skype: jv.ptec Founder and Director of R&D On Wed, Apr 17, 2019 at 12:58 AM <t...@scalpel.com> wrote: > I understand that this is possible, and thank you for the suggestion but > I'm not the biggest fan of anonymous functions. > > When I go back and read programs written this way I can't tell if I wrote > the code or a cat walked on my keyboard. > > On Tuesday, April 16, 2019 at 6:54:16 PM UTC-4, Ryan Winchester wrote: >> >> Yeah, sorry >> >> value |> (&{:ok, &1}).() >> >> On April 16, 2019 at 3:51:28 PM, Ryan Winchester (he...@ryanwinchester.ca >> ) wrote: >> >> value |> (&{&1}).() |> Tuple.insert_at(0, :ok) >> >> On April 16, 2019 at 3:47:58 PM, t...@scalpel.com (t...@scalpel.com ) >> wrote: >> >> Fair enough, I know when to give up on a losing battle. >> >> Would you consider an alternative like Tuple.wrap/1. It would work >> exactly like List.wrap/1 but doesn't carry the baggage that "error" and >> "ok" would have. This way I could still accomplish the goal of keeping pipe >> chains clean with something like. >> >> value |> Tuple.wrap() |> Tuple.insert_at(0, :ok) >> >> Which is a bit wordier but functionally equivalent to the original >> proposal. >> >> On Tuesday, April 16, 2019 at 6:04:55 PM UTC-4, José Valim wrote: >>> >>> Hi Tom, >>> >>> You don't have to buy the arguments, we can agree to disagree, but they >>> are still the reason for not adding such functions to Elixir. :) >>> >>> I also agree with is_even and is_odd being similar convenience functions >>> but they do have a rationale. They were added before defguard existed. At >>> the time, writing guards was a bit more bureaucratic. But if is_odd/is_even >>> were proposed today, they would most likely have been rejected as well. >>> >>> Elixir already has a perfectly fine syntax via curly brackets for >>> creating ok and error tuples, that also works on matching, so my >>> recommendation is still to build an extra vocabulary in your app or as a >>> separate library. >>> >>> *José Valim* >>> www.plataformatec.com.br >>> Skype: jv.ptec >>> Founder and Director of R&D >>> >>> >>> On Tue, Apr 16, 2019 at 11:46 PM <t...@scalpel.com > wrote: >>> >>>> I disagree that this should be a library. (I've already done this in my >>>> app and would be fine extracting it into one though) I don't buy the >>>> slippery slope argument. The functions are very simple to create and >>>> maintain, and it's not like the Tuple module is overflowing with >>>> complexity. We have things like 'is_even' and 'is_odd' because they are >>>> common to work with. :ok and :error are insanely common in elixir >>>> codebases. Why not add convenience methods? >>>> >>>> On Tuesday, April 16, 2019 at 5:22:38 PM UTC-4, José Valim wrote: >>>>> >>>>> Hi Tom, thanks for the proposal. >>>>> >>>>> As OvermindDL1 already hinted, this can lead to a slippery slope where >>>>> we need to add bang variants, question mark variants, ok/1/2/3/4 to deal >>>>> with arities and so on. I would suggest building this vocabulary as >>>>> necessary in your applications or, if you want to share it with the world, >>>>> it could be a nice library. Hint: the package ok_error seems to be >>>>> available. :) >>>>> >>>>> *José Valim* >>>>> www.plataformatec.com.br >>>>> Skype: jv.ptec >>>>> Founder and Director of R&D >>>>> >>>>> >>>>> On Tue, Apr 16, 2019 at 11:12 PM OvermindDL1 <overm...@gmail.com > >>>>> wrote: >>>>> >>>>>> On Tuesday, April 16, 2019 at 3:04:13 PM UTC-6, t...@scalpel.com >>>>>> wrote: >>>>>>> >>>>>>> It is often the case that you want to wrap the result of an >>>>>>> operation in an ":ok" or ":error" Tuple. We should add convenience >>>>>>> wrapper >>>>>>> functions since this is so common and it cleans up otherwise ugly code. >>>>>>> >>>>>>> def ok(value), do: {:ok, value} >>>>>>> def error(value), do: {:error, value} >>>>>>> >>>>>> >>>>>> This could be quite useful! On the other side it would be useful to >>>>>> add functions like these as well: >>>>>> >>>>>> def ok!({:ok, value}), do: value >>>>>> >>>>>> def ok?({:ok, _value}), do: true >>>>>> def ok?(_), do: false >>>>>> >>>>>> And so forth for error as well. They are not really useful on their >>>>>> own because matching is better, but for use in pipes that would be quite >>>>>> useful (right now I use the exceptional library, which does similar >>>>>> things >>>>>> and more). >>>>>> -- >>>>>> 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-l...@googlegroups.com . >>>>>> To view this discussion on the web visit https://groups.google.com/d/ >>>>>> msgid/elixir-lang-core/ 30614530-7e33-4cb8-bffb- >>>>>> 63c18248d340%40googlegroups. com >>>>>> <https://groups.google.com/d/msgid/elixir-lang-core/30614530-7e33-4cb8-bffb-63c18248d340%40googlegroups.com?utm_medium=email&utm_source=footer> >>>>>> . >>>>>> For more options, visit https://groups.google.com/d/ optout >>>>>> <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 elixir-l...@ googlegroups.com . >>>> To view this discussion on the web visit https://groups.google.com/d/ >>>> msgid/elixir-lang-core/ 0314757d-eff2-4b23-8130- >>>> a19ee921b254%40googlegroups. com >>>> <https://groups.google.com/d/msgid/elixir-lang-core/0314757d-eff2-4b23-8130-a19ee921b254%40googlegroups.com?utm_medium=email&utm_source=footer> >>>> . >>>> For more options, visit https://groups.google.com/d/ optout >>>> <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 elixir-l...@googlegroups.com . >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/elixir-lang-core/2e7204c7-6d06-49f9-8edc-7c631f75063a%40googlegroups.com >> <https://groups.google.com/d/msgid/elixir-lang-core/2e7204c7-6d06-49f9-8edc-7c631f75063a%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 elixir-lang-core+unsubscr...@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/elixir-lang-core/721abcf1-0cfd-4824-b54a-ff2aa22487f3%40googlegroups.com > <https://groups.google.com/d/msgid/elixir-lang-core/721abcf1-0cfd-4824-b54a-ff2aa22487f3%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 elixir-lang-core+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/elixir-lang-core/CAGnRm4LNegXtcdSQ6cUqSrR9tWWo9RK9fhJ-CudEsa8%2BJNSwfg%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.