@bmitc I think we started off on the wrong foot here, and that’s my fault. My sincere apologies I see that I misinterpreted some of what you said, but not on purpose, it was just my initial intuitive interpretation and it didn’t occur to me that there may be others. The subsequent “bending” as you call it, well, that might have been on purpose as I got carried away Anyway, let’s start over, shall we?
My concerns are generally centered on reading code, not my writing. I know that I can go on writing Erlang as before, without ever touching the pipe operator. But since I’m mostly contributing to existing projects instead of rolling my own, at a wild guess, I get to read ~10 lines of code for each line I end up writing.
On a side note: I agree that nested function calls are ugly, at least when done excessively. However, I don’t think intermediate bindings are bad or ugly, not per se. FWIW, it makes a nice way of “checkpointing”, but that is beside the point. The actual problem with intermediate bindings as I see it is that there is no sensible way to name them, hence the numbered bindings. I can only guess that this is also what Joe meant when he said “yucky code”, but I may be wrong.
And this leads to the possibility and raises questions about how likely it is that the presence of the pipe operator will lead to unnatural code, ie code written in a way that it fits in with the pipe operator even if not piping would be the better way in specific places. Since you brought up the term “pipeline driven development”, this is not unlikely, since it makes it a programming style or paradigm, instead of a possibility to do or not do something specific when appropriate.
I have read one or two introductions to Clojure, and while yes, they have their pipe operators ->
and ->>
, they are not hyped (for lack of a better word), only mentioned in passing, late in the book. Like “Yeah, we have that, use it when it is useful”. But in the specific case of Erlang, where many people come to the language by way of Elixir, one of the first familiar things they will see is the pipe operator, something that they may cling to early on, and which in turn may lead to its over-employment.
If you can convince me that above concerns are unjustified, I probably still won’t become a fan of it, but I wouldn’t mind it much either I’m not questioning the general usefulness of the pipe operator, I’m questioning that the usefulness it provides justifies taking the “risk” I outlined above. Once it’s there, we have to live with it, this way or that.