我的haskell代码在使用haskell打开文件时出错
我是初学者,我正在尝试阅读一个叫做“论文”的文件夹的文件(你可以在附件中看到我的项目树)。我正在使用此代码执行以下操作:我的haskell代码在使用haskell打开文件时出错,haskell,Haskell,我是初学者,我正在尝试阅读一个叫做“论文”的文件夹的文件(你可以在附件中看到我的项目树)。我正在使用此代码执行以下操作: 模块LeerDocumentos2,其中 导入系统目录 导入System.IO不安全 导入System.IO() 导入文档 读卡器:IO[Documento] 读卡器=do setCurrentDirectory“文件” 再次说明,不要使用unsafePerformIO 我打赌你的问题是getDirectoryContents返回和。这是目录 至少我会过滤掉这些。如果该目录
模块LeerDocumentos2,其中
导入系统目录
导入System.IO不安全
导入System.IO()
导入文档
读卡器:IO[Documento]
读卡器=do
setCurrentDirectory“文件”
再次说明,不要使用unsafePerformIO
我打赌你的问题是getDirectoryContents
返回
和。
这是目录
至少我会过滤掉这些。如果该目录有任何子目录,您还需要过滤掉这些子目录
而且,我会熟悉Control.Monad。试着这样做:
import Control.Monad (forM)
import Data.List (isPrefixOf)
reader = do setCurrentDirectory ...
paths <- getDirectoryContents dir
let files = filter (not . isPrefixOf ".") paths
forM files $ \file -> do
putStrLn $ "processing " ++ file
leerDocumento file
import-Control.Monad(表单)
导入数据列表(isPrefixOf)
reader=do setCurrentDirectory。。。
路径做
putStrLn$“处理”++文件
leerDocumento文件
现在您可以摆脱unsafePerformIO
和leerDocumentos
您的main
函数是什么?@ErikR是这样的:module main where main::IO()main=undefinedyou正试图打开
和。
(包括这些内容请参阅)-您可能应该从使用listDirectory
开始,而不是作为一个很好的练习,您应该尝试使用doesFileExist
检查您试图打开的东西是否确实是一个文件
import Control.Monad (forM)
import Data.List (isPrefixOf)
reader = do setCurrentDirectory ...
paths <- getDirectoryContents dir
let files = filter (not . isPrefixOf ".") paths
forM files $ \file -> do
putStrLn $ "processing " ++ file
leerDocumento file