表达式中的模式语法

Ber*_*ian 0 monads haskell

我想知道为什么我得到这个错误,因为我没有使用任何模式.在我的情况下,我没有模式匹配filterMlambda.

错误

 Pattern syntax in expression context: x -> not (x `elem` [".", ".."])
   |
20 |     filterFiles =filterM (x->not (x `elem` [".",".."]))
   |                           ^^^^^^^^^^^^^^^^^^^^^^^
Run Code Online (Sandbox Code Playgroud)

我只想过滤给定目录中的文件

  module Fil where

    import System.Directory
    import Control.Monad(filterM)

    getFiles::FilePath->IO [String]
    getFiles  = getDirectoryContents

    filterFiles::[String]->IO [String]
    filterFiles =filterM (x-> not ( x `elem` [".",".."]))
Run Code Online (Sandbox Code Playgroud)

Dan*_*ner 6

你忘了包括lambda.

filterFiles =filterM (\x-> not ( x `elem` [".",".."]))
                      ^ here
Run Code Online (Sandbox Code Playgroud)