print $ concat ["abc", "bde"]
打印
abcbde
而,
print . concat ["abc", "bde"]
第二种情况引发的错误是,
Couldn't match expected type ‘a -> b0’ with actual type ‘[Char]’
Relevant bindings include
it :: a -> IO () (bound at <interactive>:3:1)
Possible cause: ‘concat’ is applied to too many arguments
使用了 .
(函数组合运算符),因为我认为它将获取concat
函数的输出并将其传递给前面的函数print
?代码有什么问题?
答案 0 :(得分:7)
只是优先,真的;这样可以正常工作:
(print . concat) ["abc", "bde"]
.
组成了两个函数来创建一个新函数,而$
只是一种在这种情况下避免使用括号的方法。