任何人都可以在下面的示例中解释unwords . words
的行为。我希望它能删除字符串s
中的所有双重空格,但显然它没有。另一方面,unwords (words s)
的行为与预期一致。
Prelude> s
"this is a test "
Prelude> unwords (words s)
"this is a test"
Prelude> (unwords . words) s
"this is a test "
Prelude> (unwords . words) s == unwords (words s)
False
Prelude> (unwords . words) s == s
True
我在OS X 10.11.6上使用GHCi 8.2.2。
答案 0 :(得分:15)
我怀疑你可能写过类似的东西:
Prelude> (unwords . words) s = s -- oops: used "=" instead of "=="
早些时候你的GHCi会议。这样可以重新定义(.)
运算符,以便f . g
是任何f
和g
的标识函数,之后您将获得观察到的行为:< / p>
Prelude> unwords (words "a b c ")
"a b c"
Prelude> (unwords . words) "a b c "
"a b c "
甚至:
Prelude> (16 . map) "hello, world!"
"hello, world!"