01:07
<rbuckton>
Sounds like what they want is F# pipes or the ability to supply tacit unary functions. I still prefer F#-style, tbh, and I think it would have been easier to advance if we'd pushed back on supporting await and yield (e.g., (await (x |> y)) |> z) and just clarified the precedence of |> vs. =>
16:12
<TabAtkins>
By "pushed back on" do you mean "didn't support" or "required support for"? Because "fixing" the await syntax is one of the biggest arguments for pipeline, imo.
17:03
<ljharb>
F# style still wouldn't be a world where it'd make sense for a function to be able to detect whether it was called inside a pipeline or not.
18:09
<rbuckton>
F# style still wouldn't be a world where it'd make sense for a function to be able to detect whether it was called inside a pipeline or not.
Agreed. Something loosely like that was floated about very early on as a way to deal with a leading or trailing context argument, which is why I proposed partial application as a way to make that part of the syntax instead of some other protocol or this-like binding mechanism.
18:21
<rbuckton>
By "pushed back on" do you mean "didn't support" or "required support for"? Because "fixing" the await syntax is one of the biggest arguments for pipeline, imo.
By "pushed back on" I meant that it wasn't necessarily a requirement for an MVP version of the proposal since there was a workaround for it (e.g., using parens), so we could have iterated on it in a follow on. IMO, F# pipelines had a chance for quick advancement as they were a building block with very simple semantics. The current pipeline approach requires more complexity as it also necessitates defining a topic token and managing lexical scope, and the semantics don't align with the predominant use cases of pipelines in the wild. Rather than aligning with the ecosystem, we opted for a syntax that prioritized a niche use case (arbitrary expression evaluation). F#-style had no concerns about scoping or topic style, and could have survived alongside => event without partial application. And partial application solved the leading/trailing context argument concern without needing to complicate lexical scoping as well.