无法导入模块frege.system.Directory(java.lang.ClassNotFoundException:frege.system.Directory)

时间:2016-02-29 21:36:35

标签: frege

我尝试在我的Frege程序(在Eclipse中)中导入System.Directory,以便将函数用作getDirectoryContent等,并且它写了这个错误: 无法导入模块frege.system.Directory(java.lang.ClassNotFoundException:frege.system.Directory)

我该怎么做?

1 个答案:

答案 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实现支持的模块。

OP评论的更新

这是一个简单的片段,用于返回给定目录下的文件:

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