diff options
author | Sandy Maguire <sandy@sandymaguire.me> | 2019-05-16 12:12:10 -0400 |
---|---|---|
committer | Marge Bot <ben+marge-bot@smart-cactus.org> | 2019-05-26 08:57:20 -0400 |
commit | 2d0cf6252957b8980d89481ecd0b79891da4b14b (patch) | |
tree | 5857aa9938a0a587da3a53539ef2eb6f3c32f1d9 /rules | |
parent | 9be1749d24211c1a78334692d34be10dbc650371 (diff) | |
download | haskell-2d0cf6252957b8980d89481ecd0b79891da4b14b.tar.gz |
Let the specialiser work on dicts under lambdas
Following the discussion under #16473, this change allows the
specializer to work on any dicts in a lambda, not just those that occur
at the beginning.
For example, if you use data types which contain dictionaries and
higher-rank functions then once these are erased by the optimiser you
end up with functions such as:
```
go_s4K9
Int#
-> forall (m :: * -> *).
Monad m =>
(forall x. Union '[State (Sum Int)] x -> m x) -> m ()
```
The dictionary argument is after the Int# value argument, this patch
allows `go` to be specialised.
Diffstat (limited to 'rules')
0 files changed, 0 insertions, 0 deletions