Thank you for your help with this, too. Now I get another error in a different file where simply appending Eq b' doesn't do the trick:


[170 of 180] Compiling XMonad.Actions.GridSelect ( XMonad/Actions/GridSelect.hs, dist/build/XMonad/Actions/GridSelect.o )

XMonad/Actions/GridSelect.hs:227:12:
    Could not deduce (Eq b') arising from a use of `nub'
    from the context (Enum b', Num b')
      bound by the type signature for
                 diamondLayer :: (Enum b', Num b') => b' -> [(b', b')]
      at XMonad/Actions/GridSelect.hs:(226,1)-(229,35)
    Possible fix:
      add (Eq b') to the context of
        the type signature for
          diamondLayer :: (Enum b', Num b') => b' -> [(b', b')]
    In the expression: nub
    In the expression:
      nub
      $ ul
        ++
          (map (negate *** id) ul)
          ++ (map (negate *** negate) ul) ++ (map (id *** negate) ul)
    In the expression:
      let ul = [... | x <- ...]
      in
        nub
        $ ul
          ++
            (map (negate *** id) ul)
            ++ (map (negate *** negate) ul) ++ (map (id *** negate) ul)


Following your earlier advice, I have tried replacing the line

          diamondLayer :: (Enum b', Num b') => b' -> [(b', b')]

with both


          diamondLayer :: (Enum b', Num b', Eq b') => b' -> [(b', b')]

as well as

          diamondLayer :: (Enum b', (Num b', Eq b')) => b' -> [(b', b')]

but the compiler was unhappy about it in both occasions.