
On Wed, Oct 17, 2012 at 09:13:25AM -0700, Jeffrey David Johnson wrote:
xmonad.hs:43:40: Couldn't match type `XMonad.Layout.LayoutModifier.ModifiedLayout XMonad.Layout.Renamed.Rename FixedColumn' with `Full' Expected type: Full a0 Actual type: XMonad.Layout.LayoutModifier.ModifiedLayout XMonad.Layout.Renamed.Rename FixedColumn a0 In the first argument of `(|||)', namely `tall' In the expression: tall ||| wide In the expression: ("notes", "~/notes", tall ||| wide)
I think that's the case, because you can't put different layout types - regardless if they all have an instance of the same type class (LayoutClass) - in the same list, without the usage of existential quantification. I tried this: data AnyLayout a = forall l. (LayoutClass l a) => AnyLayout (l a) test = format [("admin", "~/dotfiles", AnyLayout $ Tall 1 (3/100) (2/3)), ("notes", "~/notes" , AnyLayout $ Full)] where defaultWorkspace = dragPane Vertical 0.1 0.5 format (w:[]) = workspace w $ defaultWorkspace format (w:ws) = workspace w $ format ws workspace (name, dir, AnyLayout l) = onWorkspace name l $ modWorkspace name (workspaceDir dir) But this still results in some compile error, and I don't even know, if it's possible to use existential quantification here. xmonad.hs:79:8: No instance for (LayoutClass ((->) (l0 a0)) (PerWorkspace (XMonad.Layout.LayoutModifier.ModifiedLayout WorkspaceDir l0) l0 a0)) arising from a use of `format' Possible fix: add an instance declaration for (LayoutClass ((->) (l0 a0)) (PerWorkspace (XMonad.Layout.LayoutModifier.ModifiedLayout WorkspaceDir l0) l0 a0)) In the expression: format [("admin", "~/dotfiles", AnyLayout $ Tall 1 (3 / 100) (2 / 3)), ("notes", "~/notes", AnyLayout $ Full)] In an equation for `test': test = format [("admin", "~/dotfiles", AnyLayout $ Tall 1 (3 / 100) (2 / 3)), ("notes", "~/notes", AnyLayout $ Full)] where defaultWorkspace = dragPane Vertical 0.1 0.5 format (w : []) = workspace w $ defaultWorkspace format (w : ws) = workspace w $ format ws workspace (name, dir, AnyLayout l) = onWorkspace name l $ modWorkspace name (workspaceDir dir) xmonad.hs:87:44: Could not deduce (t1 ~ PerWorkspace l1 ((->) (l a)) (PerWorkspace (XMonad.Layout.LayoutModifier.ModifiedLayout WorkspaceDir l) l a)) from the context (LayoutClass l a, LayoutClass ((->) (l a)) (PerWorkspace (XMonad.Layout.LayoutModifier.ModifiedLayout WorkspaceDir l) l a)) bound by the inferred type of workspace :: (LayoutClass l a, LayoutClass ((->) (l a)) (PerWorkspace (XMonad.Layout.LayoutModifier.ModifiedLayout WorkspaceDir l) l a)) => ([Char], [Char], AnyLayout (PerWorkspace (XMonad.Layout.LayoutModifier.ModifiedLayout WorkspaceDir l) l a)) -> t1 at xmonad.hs:87:7-100 or from (LayoutClass l1 (PerWorkspace (XMonad.Layout.LayoutModifier.ModifiedLayout WorkspaceDir l) l a)) bound by a pattern with constructor AnyLayout :: forall a (l :: * -> *). LayoutClass l a => l a -> AnyLayout a, in an equation for `workspace' at xmonad.hs:87:29-39 `t1' is a rigid type variable bound by the inferred type of workspace :: (LayoutClass l a, LayoutClass ((->) (l a)) (PerWorkspace (XMonad.Layout.LayoutModifier.ModifiedLayout WorkspaceDir l) l a)) => ([Char], [Char], AnyLayout (PerWorkspace (XMonad.Layout.LayoutModifier.ModifiedLayout WorkspaceDir l) l a)) -> t1 at xmonad.hs:87:7 In the expression: onWorkspace name l $ modWorkspace name (workspaceDir dir) In an equation for `workspace': workspace (name, dir, AnyLayout l) = onWorkspace name l $ modWorkspace name (workspaceDir dir) In an equation for `test': test = format [("admin", "~/dotfiles", AnyLayout $ Tall 1 (3 / 100) (2 / 3)), ("notes", "~/notes", AnyLayout $ Full)] where defaultWorkspace = dragPane Vertical 0.1 0.5 format (w : []) = workspace w $ defaultWorkspace format (w : ws) = workspace w $ format ws workspace (name, dir, AnyLayout l) = onWorkspace name l $ modWorkspace name (workspaceDir dir) Greetings, Daniel