music-suite / music-score

This repo has been merged into: https://github.com/music-suite/music-suite
http://music-suite.github.io
BSD 3-Clause "New" or "Revised" License
52 stars 10 forks source link

Typecheck fail on modern GHC #347

Closed relrod closed 4 years ago

relrod commented 7 years ago

I'm not sure how supported this is anymore, looking at the open issues/commit dates, but...

I'm trying to compile (against latest git for all music-* dependencies) on GHC 8.0.2, and getting this:

Resolving dependencies...
Configuring music-score-1.9.2...
Building music-score-1.9.2...
Failed to install music-score-1.9.2
Build log ( /home/ricky/.cabal/logs/music-score-1.9.2.log ):
cabal: Entering directory '.'
Configuring music-score-1.9.2...
Building music-score-1.9.2...
Preprocessing library music-score-1.9.2...
[59 of 71] Compiling Music.Score.Articulation ( src/Music/Score/Articulation.hs, dist/build/Music/Score/Articulation.o )

src/Music/Score/Articulation.hs:432:1: error:
    • Could not deduce: SetArticulation t0 t1 ~ SetArticulation t t1
      from the context: (Functor f,
                         HasArticulation t1 (SetArticulation t t1),
                         HasArticulation t1 t1)
        bound by the inferred type for ‘varticulation’:
                   (Functor f, HasArticulation t1 (SetArticulation t t1),
                    HasArticulation t1 t1) =>
                   (Voice (Articulation t1)
                    -> f (Voice (Articulation (SetArticulation t t1))))
                   -> Voice t1 -> f (Voice (SetArticulation t t1))
        at src/Music/Score/Articulation.hs:432:1-95
      Expected type: (Voice (Articulation t1)
                      -> f (Voice (Articulation (SetArticulation t t1))))
                     -> Voice t1 -> f (Voice (SetArticulation t t1))
        Actual type: (Voice (Articulation t1)
                      -> f (Voice (Articulation (SetArticulation t0 t1))))
                     -> Voice t1 -> f (Voice (SetArticulation t0 t1))
      NB: ‘SetArticulation’ is a type function, and may not be injective
      The type variable ‘t0’ is ambiguous
    • In the ambiguity check for the inferred type for ‘varticulation’
      To defer the ambiguity check to use sites, enable AllowAmbiguousTypes
      When checking the inferred type
        varticulation :: forall t (f :: * -> *) t1.
                         (Functor f, HasArticulation t1 (SetArticulation t t1),
                          HasArticulation t1 t1) =>
                         (Voice (Articulation t1)
                          -> f (Voice (Articulation (SetArticulation t t1))))
                         -> Voice t1 -> f (Voice (SetArticulation t t1))
cabal: Leaving directory '.'
cabal: Error: some packages failed to install:
music-score-1.9.2 failed during the building phase. The exception was:
ExitFailure 1

Not sure how to debug, but happy to test any fix or provide any further info that I can.

hanshoglund commented 4 years ago

This repo has been merged into music-suite/music-suite which should build fine. Please report any new issues there!

Closing :)