<story><title>Motivation – Keli Language</title><url>https://keli-language.gitbook.io/doc/</url></story><parent_chain><item><author>enricozb</author><text>When giving an example on how infix notation reads better:&lt;p&gt;&lt;pre&gt;&lt;code&gt;    &amp;#x2F;&amp;#x2F; This is obviously not too right
    &amp;quot;,&amp;quot;.splitBy(&amp;quot;1,2,3,4,5&amp;quot;)

    &amp;#x2F;&amp;#x2F; This should be right, because it reads out more naturally
    &amp;quot;1,2,3,4,5&amp;quot;.splitBy(&amp;quot;,&amp;quot;)
&lt;/code&gt;&lt;/pre&gt;
It&amp;#x27;s funny that in Python split works this way but join doesn&amp;#x27;t. This is because in the case of split both arguments are strings, but for join one of the arguments is a Sequence, which is a general protocol rather than a class.&lt;p&gt;The proposed solution by Keli is to be inspired by the Smalltalk-style message syntax:&lt;p&gt;&lt;pre&gt;&lt;code&gt;    &amp;#x27;Hello world&amp;#x27; replace: &amp;#x27;Hello&amp;#x27; with: &amp;#x27;Bye&amp;#x27;
&lt;/code&gt;&lt;/pre&gt;
I think, in general, requiring named arguments is a good thing. Swift does it, and in codebases with a decent amount of TLC, it looks great.&lt;p&gt;Function calls are one of the weird places were the syntax of the language rarely helps you figure out what is going on, and for the most part is just a sequence of human-written names one after another, and in languages with custom operators it could be even terser.&lt;p&gt;In comparison, if-statements, loops, pattern matching, etc. were (hopefully) designed to be expressive. I think by requiring named arguments, function calls will also be much more readable, relying less on an active human effort to do so.</text></item></parent_chain><comment><author>elwell</author><text>In Clojure, for functions that will probably have more than a couple args, I like to pass a map, then destructure it by its keys in the function definition. Two benefits are: you don&amp;#x27;t need to remember the order of args, and it makes refactoring easier in cases where you are simply adding a new optional arg (you don&amp;#x27;t need to update all the old calls of that function if they aren&amp;#x27;t using the new option).</text></comment>
<story><title>Motivation – Keli Language</title><url>https://keli-language.gitbook.io/doc/</url></story><parent_chain><item><author>enricozb</author><text>When giving an example on how infix notation reads better:&lt;p&gt;&lt;pre&gt;&lt;code&gt;    &amp;#x2F;&amp;#x2F; This is obviously not too right
    &amp;quot;,&amp;quot;.splitBy(&amp;quot;1,2,3,4,5&amp;quot;)

    &amp;#x2F;&amp;#x2F; This should be right, because it reads out more naturally
    &amp;quot;1,2,3,4,5&amp;quot;.splitBy(&amp;quot;,&amp;quot;)
&lt;/code&gt;&lt;/pre&gt;
It&amp;#x27;s funny that in Python split works this way but join doesn&amp;#x27;t. This is because in the case of split both arguments are strings, but for join one of the arguments is a Sequence, which is a general protocol rather than a class.&lt;p&gt;The proposed solution by Keli is to be inspired by the Smalltalk-style message syntax:&lt;p&gt;&lt;pre&gt;&lt;code&gt;    &amp;#x27;Hello world&amp;#x27; replace: &amp;#x27;Hello&amp;#x27; with: &amp;#x27;Bye&amp;#x27;
&lt;/code&gt;&lt;/pre&gt;
I think, in general, requiring named arguments is a good thing. Swift does it, and in codebases with a decent amount of TLC, it looks great.&lt;p&gt;Function calls are one of the weird places were the syntax of the language rarely helps you figure out what is going on, and for the most part is just a sequence of human-written names one after another, and in languages with custom operators it could be even terser.&lt;p&gt;In comparison, if-statements, loops, pattern matching, etc. were (hopefully) designed to be expressive. I think by requiring named arguments, function calls will also be much more readable, relying less on an active human effort to do so.</text></item></parent_chain><comment><author>laumars</author><text>I get this might just boil down to preference but I absolutely hate named parameters. They’re biased towards new users of a language and quickly become painful to write once you’re familiar with the function call.&lt;p&gt;Plus they don’t always improve writability outside of IDEs because you then have to memorise the parameter names and in some functions there’s several terms that could equally apply (if you’re using an IDE with hinting then the advantages become moot as the same IDE would hint the order of parameters).</text></comment>