Hey Amos, Ah that's right. Every now and then I'm reminded that Elixir doesn't support currying when I try to do something haha Your suggestion makes sense.
Would there be any downsides to having it, even if it isn't the most incredible function? Again to call on the `Function.identity/1`, and it's discussion, it's useful when it's useful for concise and semantic code. On Wednesday, 29 January 2020 22:43:51 UTC, Amos King - Binary Noggin wrote: > > Jesse, > > I see where you are going, but Elixir doesn't have currying. For instance, > the last example you gave will return an error. > > You could make it work by changing it a bit. > > `@spec const(a) :: fn(any() -> a) when a: var` > > So, const would return an fn instead of taking two arguments. I don't know > how useful that would be in the long run. I know it is common in function > programming, but I don't see it being extremely helpful in Elixir. > > I'm ready to be convinced. > > Cheers, > > Amos King > CEO > Binary Noggin > http://binarynoggin.com #business > https://elixiroutlaws.com #elixir podcast > http://thisagilelife.com #podcast > > ======================================================= > I welcome VSRE emails. Learn more at http://vsre.info/ > ======================================================= > > > > On Wed, Jan 29, 2020 at 4:01 PM Jesse Claven <jesse...@gmail.com > <javascript:>> wrote: > >> Hey everyone! >> >> I propose adding `Function.const/2` as a function which for argument `x`, >> would always return `x`. >> >> ``` >> @spec const(any(), any()) :: any() >> def const(_original_value, new_value), do: new_value >> ``` >> >> This is somewhat similar to the new `Function.identity/1` in that it may >> seem like we've easily lived without it, but it does afford some more >> concise/semantic ways to represent a common pattern. >> >> ``` >> fn _ -> something_else() end >> ``` >> >> This would become: >> >> ``` >> const(something_else()) >> ``` >> >> ``` >> Enum.map([0,1,2,3], &Function.const/2) >> ``` >> >> I'm new to Elixir, so I'm not sure of the weight that the name `const` >> would carry, so there could be a more acceptable name. >> >> If accepted, I'd be happy to create a PR! >> >> Equivalents in other languages: >> >> - Haskell: >> https://hackage.haskell.org/package/base-4.12.0.0/docs/Data-Function.html#v:const >> - PureScript: >> https://pursuit.purescript.org/packages/purescript-const/4.1.0/docs/Data.Const >> - Elm: >> https://package.elm-lang.org/packages/elm/core/latest/Basics#always >> - Scala: >> https://www.scala-lang.org/api/current/scala/Function$.html#const[T,U](x:T)(y:U):T >> - Idris: >> https://www.idris-lang.org/docs/current/prelude_doc/docs/Prelude.Basics.html#Prelude.Basics.const >> >> Thanks for your time. >> >> -- >> 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 <javascript:>. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/elixir-lang-core/576949a3-93e2-4117-b1f1-ab4621f10e88%40googlegroups.com >> >> <https://groups.google.com/d/msgid/elixir-lang-core/576949a3-93e2-4117-b1f1-ab4621f10e88%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 on the web visit https://groups.google.com/d/msgid/elixir-lang-core/f8b6009d-e21a-434a-96e0-e2c6ae3c1a0e%40googlegroups.com.