The problem they were discussion in the linked Github issue are pipelines where the functions receive more than one argument.
const x = fun1(a, 10)
const y = fun2(x, 20)
const z = fun3(y, 30)
In this case the pipeline version would create a bunch of throwaway closures. a |> ((a) => fun1(a, 10))
|> ((x) => fun2(x, 20))
|> ((y) => fun3(y, 30))
Furthermore, I don't see why engines should police what is or isn't acceptable performance. Using functional interfaces (map/forEach/etc.) is slower than using for loops in most cases, but that didn't stop them from implementing those interfaces either.
I don't think there's that much of a performance impact when comparing
and especially when you end up writing code like when using existing language features.