ApplicativeDo should use *> and <*
From @ekmett:
Would it be possible to tweak the generation to use (<*)
or (*>)
where appropriate when the result isn't being used?
For many Applicatives this can be a massive asymptotic win in terms of sharing and/or computational cost.
When desugaring using (<*) you'd just omit any handling of the unused result instead.
(\x y -> ...) <$> foo <* bar <*> baz
corresponds to
do x <- foo
bar
y <- baz
return ...
Trac metadata
Trac field | Value |
---|---|
Version | 7.11 |
Type | Task |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Compiler |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | ekmett |
Operating system | |
Architecture |