我尝试在我的Frege程序(在Eclipse中)中导入System.Directory,以便将函数用作getDirectoryContent等,并且它写了这个错误: 无法导入模块frege.system.Directory(java.lang.ClassNotFoundException:frege.system.Directory)
我该怎么做?
答案 0 :(得分:2)
这是因为模块frege.system.Directory
在弗雷格中并不存在。了解模块的一个好方法是在此网址上使用Hoogle for Frege:http://hoogle.haskell.org:8081。如果我们在那里search for that module,我们可以看到它没有列出任何模块,而不是,例如,如果您搜索frege.data.List
,我们会在result中看到该模块
现在,对于getDirectoryContent
所需的功能,如果查看frege.system.Directory的搜索结果,第一个结果是关于进程,第三个和第四个结果是关于jar和zip文件。如果单击第二个结果,它将打开模块frege.java.IO
,您可以看到一些可能对您有用的相关函数(例如list
)。但是,您尝试查找的Haskell模块尚未移植到Frege,但它当然可以移植由本机Java实现支持的模块。
这是一个简单的片段,用于返回给定目录下的文件:
ls :: String -> IO [String]
ls dir = do
contents <- File.new dir >>= _.list
maybe (return []) (JArray.fold (flip (:)) []) contents
关于createTempFile
,以下内容适用于我:
frege> File.createTempFile "test.txt"
String -> STMutable RealWorld File