如何调用这函数?
import Text.Regex.Posix
guessKeys line = concat $ intersperse "-" (modifiers ++ [map toLower key])
where modifiers = map (!!1) (line =~ "(mod|shift|control)Mask")
(_, _, _, [key]) = line =~ "xK_(\w+)" :: (String, String, String, [String])
对正则表达式不熟悉, 参数line不知道应该是什么样?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这么试:
> let line = ...
> (line =~ "regex") :: (String, String, String, [String])
> (line =~ "regex") :: [[String]]
class RegexContext 有好多 instances, 你给 (=~) 的返回值指定不同的类型,它就会调用不同 instance 中的 match 实现。
我这样试不对:
"((modMask .|. shiftMask, xK_Return), spawn $ XMonad.terminal conf)" =~ "(mod|shift|control)Mask"
<interactive>:1:0:
No instance for (Text.Regex.Base.RegexLike.RegexContext
Regex [Char] target)
arising from a use of `=~' at <interactive>:1:0-96
Possible fix:
add an instance declaration for
(Text.Regex.Base.RegexLike.RegexContext Regex [Char] target)
In the expression:
"((modMask .|. shiftMask, xK_Return), spawn $ XMonad.terminal conf)"
=~
"(mod|shift|control)Mask"
In the definition of `it':
it = "((modMask .|. shiftMask, xK_Return), spawn $ XMonad.terminal conf)"
=~
"(mod|shift|control)Mask"
line 就是 XMonad/Config.hs 中那些包含 %! 的行,把 -- 后的部分去掉,然后把前后的空白字符去掉的结果。