是否可以在Xmonad中拥有用户状态?
我现在正在使用全局变量,但我想知道在Xmonad中是否有正确的方法。 (例如:在parsec中,有一个用户状态,因此你可以使用Parser TYPE ...
,其中TYPE是用户状态的类型,可以使用getState,putState和modifyState查询。)
答案 0 :(得分:2)
可以在config.hs模块中指定/修改Xmonad中的布局状态,但Xmonad也可以实现extensible states。我建议你看两个。 Haskell Extensible States上的文档将模块列为“不稳定”模块。但是我觉得自从文档更新(大约三年后?)以来它是公平的。
[sample]代码如下所示:
{-# LANGUAGE DeriveDataTypeable #-}
import qualified XMonad.Util.ExtensibleState as XS
data ListStorage = ListStorage [Integer] deriving Typeable
instance ExtensionClass ListStorage where
initialValue = ListStorage []
.. XS.put (ListStorage [23,42])
(e.g.) put :: ExtensionClass a => a -> X ()