Closed schuelermine closed 3 years ago
This is intentional.
=<<
was implemented for the arbitrary-length arrows so you can write things like ==<<===
and so forth. However, in the case of >>=
there is an operator in JavaScript that would be strange to replace with an arrow form. As a compromise, if you add another =, then it'll swap for the arrow ligature.
Sure, but Haskell uses this for the bind operator, and there, it's expected to be in ligature form, especially since =<<
has the same meaning, but flipped.
Ah, well then perhaps I should disable =<<
too then :)
Ah, well then perhaps I should disable
=<<
too then :)
tbh if there are more suggestions for Haskell ligatures, you could turn it into stylistic set, right?
Certainly could.
I think for now I'll disable arrow forms for all of the associated operators (=>>
<<=
=<<
and >>=
), but might add special ligatures for them in the future to give a bit of a nicer appearance—or as @mfocko recommended, add a stylistic set for Haskell use. Thanks!
Aw, I love the arrow forms.
you can still get to them via ==>>
<<==
==<<
and >>==
! Honestly, I think it would be nice to have ligatures for these, I just don't like the inconsistency :/
you can still get to them via
==>>
<<==
==<<
and>>==
! Honestly, I think it would be nice to have ligatures for these, I just don't like the inconsistency :/
I think that line of reasoning is misguided. The thing we like about the arrow forms is that they appear in our code, not that we can type them.
I don't disagree that it is nice to see them in Haskell. The problem is that they cause confusion / irritation in other scenarios and users of those scenarios might prefer to not have them look like arrows as they serve other purposes.
This is why I said that it would either make sense to create non-arrow ligature forms or provide a stylistic set for Haskell-only functionality. Either way, these operators should perform the same.
I agree. I just disagree with the idea that the fact that similar ligatures are still available diminishes the Haskell use case.
I really like the idea of a stylistic set for Haskell, I think that would be the best option. However, why not both? A JS-style ligature, and a Haskell-style ligature.
Oh, no I didn't mean to diminish the Haskell use case. More to indicate that the arrows are still available if one wants to make arrows. :)
Anyway, I'll mull over options.
Cool, I'm looking forward to any solutions!
I changed the title to reflect that the topic has widened.
I think it might be a good compromise to create a ligature for all of: >>=
, =>>
, <<=
and =<<
, that uses a narrower version of the >>
and <<
ligatures as a base, with the =
sign extending from it.
There currently isn’t any ligature for either of >>=
and <<=
, which is used as a bit‑shift and assign operator in C‑like languages (maybe also include the unsigned variant: >>>=
and <<<=
).
These ligatures don't only apply for Haskell, but also for PureScript. In fact many functional languages using operators heavily are relevant for this.
rip haskell users, since https://github.com/microsoft/cascadia-code/releases/tag/v2106.17
really liked the ligatures on >>=
and =<<
(No discernible ligature, using the latest release https://github.com/microsoft/cascadia-code/releases/tag/v2111.01)
Environment
Steps to reproduce
Type
>>=
.Expected behavior
A ligature appears, as with
=<<
.Actual behavior
No ligature appears.
Screenshot