haskell中的点运算符

bas*_*354 1 haskell operators dot-operator

我有一个使用Dot-operator的函数.现在我想写没有点.我怎样才能做到这一点?

all p = and . map p
Run Code Online (Sandbox Code Playgroud)

这是正确的吗?

all p = and (map p)
Run Code Online (Sandbox Code Playgroud)

我收到这些错误:

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)
Run Code Online (Sandbox Code Playgroud)

Fre*_*Foo 14

看看定义(.):

f . g  =  \ x -> f (g x)
Run Code Online (Sandbox Code Playgroud)

扩展这个给出了

and . (map p)  =  \x -> and ((map p) x)
Run Code Online (Sandbox Code Playgroud)

要么

all p x  =  and (map p x)
Run Code Online (Sandbox Code Playgroud)