如何在cabal repl中加载含隐藏包依赖的Cabal脚本?
如何在cabal repl中加载带内联依赖的Cabal脚本
问题场景
我有一个包含内联Cabal依赖配置的Haskell脚本,通过cabal run script.hs可以正常执行,但在cabal repl中加载时遇到依赖缺失问题:
脚本代码:
#!/usr/bin/env cabal {- cabal: build-depends: base , split -} import Data.List.Split (splitOn) main :: IO () main = do let orders = splitOn "x" "axbxc" putStrLn $ head orders
直接启动cabal repl后执行:load script.hs,会报错提示无法加载隐藏包split-0.2.4;尝试:load *script.hs或cabal repl script.hs也无法解决问题。
解决方案
Cabal的内联脚本配置({- cabal: ... -})仅被cabal run解析,cabal repl默认不会读取这部分配置,因此需要显式指定依赖:
方法1:先启动带依赖的repl再加载脚本
执行以下命令启动repl,显式声明依赖:
cabal repl --build-depends split
启动完成后,在repl中执行:load script.hs即可正常加载脚本。
方法2:一次性加载脚本并指定依赖
直接用以下命令,启动repl的同时加载脚本并注入依赖:
cabal repl --build-depends split script.hs
两种方法都不需要新增任何配置文件,也无需系统级安装split包,完全满足无副作用的需求。
内容的提问来源于stack exchange,提问作者peer
相关产品推荐
相关产品推荐

