[xmonad] stupid newbie question about `removeKeysP`
Gwern Branwen
gwern0 at gmail.com
Wed May 5 16:31:56 EDT 2010
On Wed, May 5, 2010 at 4:12 PM, 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.
No; do-notation is only necessary if you're using any syntax like the
let bindings or <- or newlines - stuff which desugars to use of
monadic functions like >> or >>=. This is all straight function calls.
Hlint will even tell you that the do is unnecessary:
hlint foo.hs
foo.hs:1:9: Error: Redundant do
Found:
do xmonad $
gnomeConfig{terminal = "urxvtcd"} `removeKeysP` ["M-b", "M-."]
Why not:
xmonad $
gnomeConfig{terminal = "urxvtcd"} `removeKeysP` ["M-b", "M-."]
Found 1 suggestion (1 error)
--
gwern
More information about the xmonad
mailing list