f(a, b)で考えるからf(b)渡すのは変だと感じるんでしょ

パイプで使う関数はf(s, a)やg(s, a, b) なので
s |> f(a) |> g(a, b) になる
引数の捉え方が違う

F#ならf(a, s)やg(a, b, s)だから
s |> f a |> g a b になる