=〜函数参数的顺序相反

时间:2015-04-20 07:00:32

标签: regex haskell

Bool > "my left foot" =~ "foo" :: Bool

=~是来自Text.Regex.Posix包的中缀运算符,此处,目标字符串位于左侧,模式字符串位于右侧。在这里,=~对我有意义。

但是,

readIp = untilM (=~ "[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}")
    (putStr "Enter IP address: " >> getLine)

=~只有正确的参数,并且被赋予untilMtarget string作为最后一个参数。 untilM如何确保=~在其左侧传递目标字符串并在其右侧传递模式字符串?

1 个答案:

答案 0 :(得分:6)

这就是操作员部分的工作原理。

(=~)    = \x y -> x =~ y
(x =~)  = \y -> x =~ y
(=~ y)  = \x -> x =~ y

助记符:如果您有(x =~ y)并且取出x,则会留下( =~ y)

如果您希望读取正则表达式并将其与常量字符串匹配,则可以使用其他部分:

untilM ("foo" =~) (putStr "Enter regex: " >> getLine)