点与美元符号

时间:2015-04-21 06:46:15

标签: haskell

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?代码有什么问题?

1 个答案:

答案 0 :(得分:7)

只是优先,真的;这样可以正常工作:

(print . concat) ["abc", "bde"]

.组成了两个函数来创建一个新函数,而$只是一种在这种情况下避免使用括号的方法。