我有一个库,我希望我的可执行文件几乎是我在cabal repl
时获得的,即我希望用户能够使用Haskell表达式,并导入模块并使用数据类型在我的图书馆中定义。
有可能吗?我认为hint
只能使用源文件(用户无法使用),但我不确定。当我尝试从我的库或全局安装的cabal软件包加载模块时,我收到一条模糊的错误消息,指出该模块是一个软件包模块。事实上,我写的几乎所有内容都会这样做:
ghci> runInterpreter $ loadModules ["Not.A.Package.Module"]
Left (WontCompile [GhcError {errMsg = "<no location info>: error:\n module \8216Not.A.Package.Module\8217 is a package module"}])
有没有办法做到这一点? (PS我正在使用GHC 8.0.1并且plugins
不支持它,而且我也认为这是一个非常死的项目。如果还有另一种方法,hint
&amp; {{1}我愿意接受它。)
答案 0 :(得分:0)
您可以自己制作一个堆栈项目,并将您的代码放在Hackage上。
然后在您的项目中将该包添加到build-depends
文件的*.cabal
部分。
然后,只需使用setImportsQ
中的hint
导入您需要的内容。
示例取决于Chart
和Chart-diagrams
:
build-depends: base
...
, Chart
, Chart-diagrams
然后在你的评估函数中:
setImportsQ[ ("Prelude",Nothing)
, ("Graphics.Rendering.Chart.Easy", Nothing)
, ("Graphics.Rendering.Chart.Backend.Diagrams", Nothing)
]