const greeting = pipe('hello'); greeting | upper | ex('!!!'); await greeting.run(); // → "HELLO!!!"
const greeting = pipe('hello'); greeting / upper * ex('!!!'); await greeting.run(); // → "HELLO!!!"
Mutating your inputs is not functional programming. And pipes are effectively compact list comprehensions. Comprehensions without FP is Frankensteinian.