<div dir="ltr"><div>So these are your example utility functions:</div><div>```javascript</div><div>function capitalize (str) { /* ... */ }</div><div>function trim (str) { /* ... */ }</div><div>function splitBySpaces (str) { /* ... */ }</div><div>```</div><div><br></div><div>What makes you think that utility functions should be coded like that? Take these for an example:</div><div>```javascript</div><div>// Using "this"</div><div>function trim(characters) {</div><div>  // this...</div><div>  return capitalizedString;</div><div>}</div><div><br></div><div>// Using a parameter</div><div>function trim(string, characters) {</div><div>  // string...</div><div>  return capitalizedString;</div><div>}</div><div>```</div><div><br></div><div>What is the best practice when coding functions like this? Using `this` is a clear winner since that's how the native and user utility methods for the `.prototype`s of String, Array and such work. More importantly, that's how polyfills are done. Plus FBS, which allows very easy consumption of functions coded like this, is already at stage 0.</div><div><br></div><div>When the functions in the PO examples should be coded with `this` anyway, then where is the need for PO?</div><div><br></div><div>---</div><div><br></div><div>Also, you shouldn't make your examples this simple. It's almost like you are deliberately trying to hide the truth.</div><div><br></div><div>This is the reality of current PO syntax:</div><div>```javascript</div><div>console.log(getSomething() |> _ => trim(_, '-') |> _ => words(_, /[^, ]+/g) |> _ => pad(_, 20, '-'));</div><div>```</div><div><br></div><div>Even if there is a need for PO, the syntax should change:</div><div>```javascript</div><div>param1 |> func(param2, param3)</div><div><br></div><div>console.log(getSomething() |> trim('-') |> words(/[^, ]+/g) |> pad(20, '-'));</div><div>```</div><div><br></div><div>Then it becomes something very close to FBS and doesn't look weird when it's used with it everything else:</div><div>```javascript</div><div>'something'</div><div>  ::trim('-')</div><div>  .concat('asd')</div><div>  |>repeat(3);</div><div>```</div></div>