The broader idea of “pass a value between functions without naming it in the caller” crops up in a few other places outside FP.
In Rust there is the “builder pattern”[0] where the builder isn’t mentioned directly:
ByValueBuilder::new()
.with_favorite_number(42)
.with_favorite_programming_language("Rust")
.build()
In OO land they are called “fluent interfaces”[1], commonly used when building SQL queries while only mentioning the final query at the end:
query = translations
.Where(t => t.Key.Contains("a"))
.OrderBy(t => t.Value.Length)
.Select(t => t.Value.ToUpper());
Especially in the query builder example, since it is essentially building up an AST, the type of the top-level object can change in each call, but since it isn’t named it also doesn’t need to be typed, so there’s no issue with variable shadowing etc.
[0] https://blog.logrocket.com/build-rust-api-builder-pattern/
[1] https://en.m.wikipedia.org/wiki/Fluent_interface