Ticket #2275 (closed bug: invalid)
Poor indication of type error location
| Reported by: | guest | Owned by: | |
|---|---|---|---|
| Priority: | low | Milestone: | 6.10 branch |
| Component: | Compiler (Type checker) | Version: | 6.8.2 |
| Keywords: | Cc: | ||
| Operating System: | Unknown/Multiple | Architecture: | Unknown/Multiple |
| Type of failure: | Difficulty: | Unknown | |
| Test Case: | Blocked By: | ||
| Blocking: | Related Tickets: |
Description (last modified by igloo) (diff)
Using {-# OPTIONS_GHC -XArrows -fno-monomorphism-restriction #-}, and Yampa Starting from line 32, my program contains:
fireworkSF :: Point2 GL.GLdouble -> Point2 GL.GLdouble -> Object
fireworkSF p0 pFinal = proc _ -> do
rec
position <- (p0 .+^) ^<< integral -< v0
let shouldExplode = position == pFinal
let killReq = if shouldExplode then Event () else noEvent
let spawnReq = if shouldExplode
then Event (Explode pFinal)
else noEvent
returnA -< ObjectOutput {oState = FireworkState position
,oKillReq = killReq
,oSpawnReq = spawnReq}
where
v0 = (pFinal ^-^ p0) ^/ 2
The type error reports:
Firework.hs:32:0:
Couldn't match expected type `Point2 GL.GLdouble'
against inferred type `Vector2 GL.GLdouble'
When using functional dependencies to combine
AffineSpace (Point2 a) (Vector2 a) a,
arising from the instance declaration at <no location info>
AffineSpace (Point2 GL.GLdouble) (Point2 GL.GLdouble) a,
arising from a use of `.+^' at Firework.hs:34:16-23
When generalising the type(s) for `fireworkSF'
Indicating that the bug is something to do with line 34. The actual bug is that the last line of the paste should read:
v0 = (pFinal .-. p0) ^/ 2
Change History
Note: See
TracTickets for help on using
tickets.
