我正在使用getDirectoryContents沿着toText派生和fldmap。
发生错误是:
IoString.hs:17:5: error:
• Couldn't match expected type: FilePath -> IO ()
with actual type: IO b0
• In a stmt of a 'do' block:
contents <- getDirectoryContents "/home/lukas"
In the expression:
do contents <- getDirectoryContents "/home/lukas"
contents >>= map print toText
In an equation for ‘main’:
main
= do contents <- getDirectoryContents "/home/lukas"
contents >>= map print toText
|
17 | contents <- getDirectoryContents "/home/lukas"
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
还有更多的人在下面。
在附件中,代码:
--{-# LANGUAGE OverloadedStrings #-}
module Main where
import Control.Monad.IO.Class (MonadIO, liftIO)
import Data.Text (pack, Text)
import System.Directory (getDirectoryContents, getCurrentDirectory, makeAbsolute)
import GHC.Real (reduce)
parse xs = foldMap pack
toText :: [FilePath] -> Text
toText = foldMap pack
main :: FilePath -> IO ()
main = do
contents <- getDirectoryContents "/home/lukas"
contents >>= map print toText
尝试读取目录内容,期望打印。
1条答案
按热度按时间m0rkklqb1#
一个基本的命令式for循环:
这可以通过多种方式缩短,例如:
traverse_
和for_
是相同的函数,但它们的参数颠倒了。