[xmonad] stupid newbie question about `removeKeysP`

Anders Engström ankaan at gmail.com
Wed May 5 16:26:05 EDT 2010


Actually, you don't need "do". Since xmonad with argument applied
becomes IO () and main is IO (). When you only have one statement
after do, it is an identity operation.

Actually, I cheated and looked at the docs which had this example:
 main = xmonad $ defaultConfig { terminal = "urxvt" }
                 `removeKeysP` ["M-S-" ++ [n] | n <- ['1'..'9']]

On Wed, May 5, 2010 at 22:12, Patrick Brisbin <pbrisbin at gmail.com> wrote:
> On 05/05/10 at 10:04pm, Anders Engström wrote:
>> Try this (untested code, note the '$'):
>> main = xmonad $ gnomeConfig
>>         {terminal       = "urxvtcd"
>>         }
>>         `removeKeysP` ["M-b","M-."]
>>
>> Which is equivalent to, or a shorthand for:
>> main = xmonad (gnomeConfig
>>         {terminal       = "urxvtcd"
>>         }
>>         `removeKeysP` ["M-b","M-."])
>>
>>
>> `removeKeysP` is in your code applied to the arguments:
>> arg1: xmonad gnomeConfig {terminal       = "urxvtcd"}
>> arg2: ["M-b","M-."]
>>
>> Hope that helps.
>> /Anders
>>
>> On Wed, May 5, 2010 at 21:37, Jonas Bygdén <jonaslistor at gmail.com> wrote:
>> > Hi,
>> > I'm slowly going nuts here.
>> > This is my complete xmonad.hs file:
>> > -------------------------------------------
>> > import XMonad
>> > import XMonad.Config.Gnome
>> > import XMonad.Util.EZConfig
>> > main = xmonad gnomeConfig
>> >         {terminal       = "urxvtcd"
>> >         }
>> >         `removeKeysP` ["M-b","M-."]
>> > -------------------------------------------
>> > And when I try to use it I get these errors:
>> > -------------------------------------------
>> > xmonad.hs:5:7:
>> >     Couldn't match expected type `XConfig l'
>> >            against inferred type `IO ()'
>> >     In the first argument of `removeKeysP', namely
>> >         `xmonad (gnomeConfig {terminal = "urxvtcd"})'
>> >     In the expression:
>> >           xmonad (gnomeConfig {terminal = "urxvtcd"})
>> >         `removeKeysP`
>> >           ["M-b", "M-."]
>> >     In the definition of `main':
>> >         main = xmonad (gnomeConfig {terminal = "urxvtcd"})
>> >              `removeKeysP`
>> >                ["M-b", "M-."]
>> > Please check the file for errors.
>> > -------------------------------------------
>> > Where have I gone wrong?
>> > /Jonas
>> > _______________________________________________
>> > xmonad mailing list
>> > xmonad at haskell.org
>> > http://www.haskell.org/mailman/listinfo/xmonad
>> >
>> >
>> _______________________________________________
>> xmonad mailing list
>> xmonad at haskell.org
>> http://www.haskell.org/mailman/listinfo/xmonad
>
> Don't you still need a 'do' somewhere in there?
>
>  main = do
>    xmonad $ gnomeConfig
>    { terminal = "urxvtcd"
>    }
>    `removeKeysP` ["M-b", "M-."]
>
> should compile.
>
> I think all on one line looks more readable though:
>
>  main = do
>    xmonad $ gnomeConfig { terminal = "urxvtcd" } `removeKeysP` ["M-b", "M-."]
>
>
> Apologies if this doesn't work, I haven't compiled it myself.
>
> --
> patrick brisbin
> _______________________________________________
> xmonad mailing list
> xmonad at haskell.org
> http://www.haskell.org/mailman/listinfo/xmonad
>


More information about the xmonad mailing list