News for hackers. Stuff that matters.
Re:N-Params vs. Single Param by sixo on Thursday April 17, 2025 @04:12PM (#43721678)
A little while ago I sketched some ideas for a programming language [1], one of which was that I would like a language who did not distinguish between these two cases. Obviously you can always write a function with a single N-param argument, but it's rather verbose, but would be nice to also be able to write the param list normally and then refer directly to its parameter type elsewhere. Although this would require that the "set of possible parameter lists" were the same as "the set of possible object type", which isn't the case in any language I know of.

[1] https://samkrit.ch/2025/03/09/programming-1.html#anonymous-t...

Re:N-Params vs. Single Param by feoren on Thursday April 17, 2025 @06:03PM (#43722713)
Isn't C#'s named arguments basically what you want? You can choose to use the names or not at the time of calling the function. You can name some arguments but not others. Don't many programming languages have this feature?
Re:N-Params vs. Single Param by intrepidhero on Thursday April 17, 2025 @06:39PM (#43722994)
I had a similar thought while designing my dream programming language but I also wanted automatic currying and I couldn't figure out an ergonomic way to have both.

Now I'm gonna go read your blog series.

Re:N-Params vs. Single Param by ashtuchkin on Thursday April 17, 2025 @07:31PM (#43723370)
python does this pretty elegantly:

    def my_func(a: int, b: int):
        print(a+b)

    # both of these can be used
    my_func(1, 2)
    my_func(a=1, b=2)
Re:N-Params vs. Single Param by ziofill on Friday April 18, 2025 @12:34AM (#43725056)
Also `my_func(**{a:1, b:2})`
Re:N-Params vs. Single Param by ImageXav on Friday April 18, 2025 @09:39AM (#43727990)
Even better, python has named tuples [0]. So if you have a tuple that you are sure will always have the same inputs you can declare it:

``` Point = namedtuple('Point', 'x y') pt1 = Point(1.0, 5.0) ```

And then call the X or Y coordinates either by index: pt1[0], pt1[1], or coordinate name: pt1.x, pt1.y.

This can be a really handy way to help people understand your code as what you are calling becomes a lot more explicit.

[0] https://stackoverflow.com/questions/2970608/what-are-named-t...

Re:N-Params vs. Single Param by sixo on Saturday April 19, 2025 @07:23PM (#43740253)
This isn't what I'm talking about. I would want

    def my_func(a: int, b: int):
      ...

    def my_func2(args: my_func.__args_type__):
      ...
with `my_func.__args_type__` standing for an object like `{a: int, b: int}`.