Haskell脚本中Data.Text模块多包冲突的解决方法
解决Haskell脚本中Data.Text模块重复的编译错误
你遇到的错误是因为当前LTS-19.6环境里,relude包(通常作为替代标准Prelude的库)和官方text包都提供了Data.Text模块,编译器无法自动确定使用哪一个。以下是两种可行的解决方式:
方法一:显式指定模块所属包
这是最直接且安全的方式,在导入语句中明确指定要使用text包的Data.Text模块:
#!/usr/bin/env stack -- stack --resolver lts-19.6 script {-# LANGUAGE OverloadedStrings #-} import Turtle -- 带限定名导入(推荐,避免潜在的命名冲突) import qualified "text" Data.Text as T
如果不需要限定名,也可以直接写:
import "text" Data.Text
方法二:排除relude包(可选)
如果你的脚本完全不需要relude包,可以在stack脚本头部添加排除指令,强制不引入该包:
#!/usr/bin/env stack -- stack --resolver lts-19.6 script --package turtle --exclude-package relude {-# LANGUAGE OverloadedStrings #-} import Turtle import Data.Text
注意:这种方式可能引发依赖冲突,如果其他依赖需要relude则会报错,因此优先推荐方法一。
内容的提问来源于stack exchange,提问作者Jencel
相关产品推荐
相关产品推荐

