[GHC] #8767: Add rules involving `coerce` to the libraries
GHC
ghc-devs at haskell.org
Thu Sep 11 18:05:14 UTC 2014
#8767: Add rules involving `coerce` to the libraries
-------------------------------------+-------------------------------------
Reporter: nomeata | Owner:
Type: task | Status: new
Priority: normal | Milestone: 7.10.1
Component: | Version: 7.9
libraries/base | Keywords:
Resolution: | Architecture: Unknown/Multiple
Operating System: | Difficulty: Unknown
Unknown/Multiple | Blocked By: 8718
Type of failure: | Related Tickets: #2110
None/Unknown |
Test Case: |
tests/simplCore/should_run/T2110.hs|
Blocking: |
Differential Revisions: |
-------------------------------------+-------------------------------------
Comment (by dmcclean):
I'm out of my depth here, not even sure this thread is about what I'm
running in to.
I want to coerce from `f (Quantity d v)` to `f v` where `f` is a functor,
so that I can add up all the values without their wrappers in the way and
then wrap the answer.
This works a charm if I specialize `f` to `[]`, but doesn't compile
("because 'f (Quantity d v)' and 'f v' are different types") in the
polymorphic version. (Full function below.)
{{{
sum :: forall f d v.(Num v, Foldable f, Functor f) => f (Quantity d v) ->
Quantity d v
sum = coerce . Data.Foldable.sum . (\x -> x :: f v) . coerce
sum :: forall d v.(Num v) => [Quantity d v] -> Quantity d v
sum = coerce . F.sum . (\x -> x :: [v]) . coerce
}}}
Is this thread about making a workaround for that?
Is the reason that it's complicated because some functors have nominal
roles? (Maybe a SortedList would break if you changed out `Ord` instances
under it?) Or is there more to it than that?
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/8767#comment:17>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list