Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Preserve parameter names when a curried function is partially applied #1134

Open
4 of 5 tasks
theprash opened this issue Apr 21, 2022 · 1 comment
Open
4 of 5 tasks

Comments

@theprash
Copy link

Migrated from dotnet/fsharp#3420

Consider these two functions:

let function1 param1 param2 = param1 + param2
let function2 = function1 0

Running these definitions into FSI results in this:

val function1 : param1:int -> param2:int -> int
val function2 : (int -> int)

function2 loses the parameter name param2. I propose that the parameter name is preserved so that its resulting type looks like this instead:

val function2 : param2:int -> int

An existing workaround is to write the second function with an explicit parameter instead of using currying. This is more verbose as we give up the benefit of currying.

let function2 param2 = function1 0 param2

Pros and Cons

The advantages of making this adjustment to F#:

  • Code is slightly more documented automatically when looking at inferred types.
  • Easier to see the meaning of the function parameter when writing code that calls the function.

The disadvantages of making this adjustment to F# are 🤷🏾‍♂️

Extra information

Estimated cost (XS, S, M, L, XL, XXL): 🤷🏾‍♂️

Affidavit (please submit!)

Please tick this by placing a cross in the box:

  • This is not a question (e.g. like one you might ask on stackoverflow) and I have searched stackoverflow for discussions of this issue
  • I have searched both open and closed suggestions on this site and believe this is not a duplicate
  • This is not something which has obviously "already been decided" in previous versions of F#. If you're questioning a fundamental design decision that has obviously already been taken (e.g. "Make F# untyped") then please don't submit it.

Please tick all that apply:

  • This is not a breaking change to the F# language design
  • I or my company would be willing to help implement and/or test this

For Readers

If you would like to see this issue implemented, please click the 👍 emoji on this issue. These counts are used to generally order the suggestions by engagement.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants