[xmonad] Testing GHC HEAD
adam vogt
vogt.adam at gmail.com
Sun Feb 17 17:57:05 CET 2013
On Sun, Feb 17, 2013 at 7:30 AM, Carsten Mattner
<carstenmattner at gmail.com> wrote:
> xmonad built fine with GHC HEAD but XMonadContrib failed with the following
> build error:
>
> XMonad/Layout/MultiToggle.hs:162:9:
> Could not deduce (HList b w0)
> arising from the ambiguity check for `??'
> from the context (HList b w)
> bound by the type signature for
> ?? :: HList b w => a -> b -> HCons a b
> at XMonad/Layout/MultiToggle.hs:162:9-42
> The type variable `w0' is ambiguous
> In the ambiguity check for:
> forall a b w. HList b w => a -> b -> HCons a b
> In the type signature for `??':
> ?? :: HList b w => a -> b -> HCons a b
>
> Can anyone suggest a fix?
Hi Carsten,
You could remove that context completely:
(??) :: a -> b -> HCons a b
Unfortunately, this makes it possible to construct HLists that might
be invalid for the rest of the code. For example with the context
there I have:
:t \a b -> a ?? b ?? ()
<interactive>:1:16:
No instance for (HList () w0)
arising from a use of `??'
Possible fix: add an instance declaration for (HList () w0)
In the second argument of `(??)', namely `b ?? ()'
In the expression: a ?? b ?? ()
In the expression: \ a b -> a ?? b ?? ()
With my suggested change, you are allowed to end the list with ()
\a b -> a ?? b ?? () :: a -> a1 -> HCons a (HCons a1 ())
Other things to try, that probably won't work, is to try something
that might make ghc be more lazy about finding the instance:
(??) :: (b2 ~ b, HList b2 w) => a -> b -> HCons a b
Also, you might also try adding a fundep to the HList class, which
will fix the 'w' given the 'b'.
class HList c a | c -> a where
--
Adam
More information about the xmonad
mailing list