我有以下函数定义(相当于):
reverseWords :: String -> String
reverseWords wds = unwords . map reverse . words $ wds
和
reverseWords :: String -> String
reverseWords = unwords . map reverse . words
我知道它们是等价的,因为它们会产生相同的结果,但我对第二种形式感到有些困惑。
如果我调用类似的函数:
reverseWords abc
haskell如何决定在哪里放置这个' abc'参数β
答案 0 :(得分:1)
Haskell不需要决定放置abc
的位置。当您在第二个示例中致电reverseWords
时,它只会返回unwords . map reverse . words
。
然后abc将应用于您最终会得到与第一个示例相同的结果。
这也称为无点样式,您可以在此处阅读更多相关信息:https://wiki.haskell.org/Point-free