我有一个使用Dot-operator的函数。现在我想写没有点。我怎么能这样做?
all p = and . map p
这是对的吗?
all p = and (map p)
我收到这些错误:
4.hs:8:13:
Couldn't match expected type `[Bool]'
with actual type `[a0] -> [b0]'
In the return type of a call of `map'
Probable cause: `map' is applied to too few arguments
In the first argument of `and', namely `(map p)'
In the expression: and (map p)
答案 0 :(得分:14)
查看(.)
的{{3}}:
f . g = \ x -> f (g x)
扩展此功能
and . (map p) = \x -> and ((map p) x)
或
all p x = and (map p x)
答案 1 :(得分:4)
删除(.)
需要明确添加点是通过函数“线程化”的参数。你想要像
all p xs = and (map p xs)