Can';编译haskell编码库。不能';找不到HaXml模块
我需要一个库来编码cp1251中的数据,以使用它的api 为此,我只找到了2个LIB。自由党和自由党。第一个看起来更好,因为它可以静态链接到我的程序 但我甚至不能编译它!我正在使用堆栈,因此我添加了Can';编译haskell编码库。不能';找不到HaXml模块,haskell,haskell-stack,Haskell,Haskell Stack,我需要一个库来编码cp1251中的数据,以使用它的api 为此,我只找到了2个LIB。自由党和自由党。第一个看起来更好,因为它可以静态链接到我的程序 但我甚至不能编译它!我正在使用堆栈,因此我添加了编码以在.cabal文件中构建DEP,然后堆栈解算器在额外的DEP中使用编码-0.8更新我的堆栈yaml文件 但是在运行堆栈构建之后我遇到了一个错误 Data/Encoding/Preprocessor/XMLMapping.hs:11:8: Could not find module ‘Te
编码
以在.cabal文件中构建DEP,然后堆栈解算器在额外的DEP中使用编码-0.8更新我的堆栈yaml文件
但是在运行堆栈构建之后
我遇到了一个错误
Data/Encoding/Preprocessor/XMLMapping.hs:11:8:
Could not find module ‘Text.XML.HaXml.Types’
Use -v to see a list of the files searched for.
Data/Encoding/Preprocessor/XMLMappingBuilder.hs:15:8:
Could not find module ‘Text.XML.HaXml.OneOfN’
Use -v to see a list of the files searched for.
Data/Encoding/Preprocessor/XMLMappingBuilder.hs:16:8:
Could not find module ‘Text.XML.HaXml.XmlContent’
Use -v to see a list of the files searched for.
我尝试使用旧版本的HaXml和编码,但得到了相同的错误。
例如,在阅读changelog之后,我尝试将编码-0.6.7
与HaXml-1.22.3
一起使用,但得到了相同的错误。
在黑客文档中,所有这些编码无法导入的模块都存在
如何编译这个库?我正在linux mint x64上使用stack 1.0.4、lts-5.6和ghc-7.10.3
stack.yaml
flags: {}
extra-package-dbs: []
packages:
- '.'
extra-deps:
- encoding-0.8
- text-1.2.2.0
resolver: lts-5.6
阴谋集团:
name: hapidry
version: 0.1.1.0
synopsis: Initial project template from stack
description: Please see README.md
homepage: -
license: GPL-2
license-file: LICENSE
author: -
maintainer: -
copyright: GPL
category: network
build-type: Simple
-- extra-source-files:
cabal-version: >=1.10
library
hs-source-dirs: src
exposed-modules: Lib
build-depends: base >= 4.7 && < 5
default-language: Haskell2010
executable hapidry-exe
hs-source-dirs: app
main-is: Main.hs
ghc-options: -threaded -rtsopts -with-rtsopts=-N
build-depends: base
, hapidry
, wreq
, ConfigFile
, aeson
, lens
, cryptohash
, binary
, mtl
, base16-bytestring
, bytestring
, containers
, text
, lens-aeson
, data-default
, optparse-applicative
, encoding
default-language: Haskell2010
test-suite hapidry-test
type: exitcode-stdio-1.0
hs-source-dirs: test
main-is: Spec.hs
build-depends: base
, hapidry
ghc-options: -threaded -rtsopts -with-rtsopts=-N
default-language: Haskell2010
source-repository head
type: git
location: -
名称:hapidry
版本:0.1.1.0
简介:来自堆栈的初始项目模板
描述:请参阅README.md
主页:-
许可证:GPL-2
许可证文件:许可证
作者:-
维护者:-
版权所有:GPL
类别:网络
构建类型:简单
--额外源文件:
阴谋集团版本:>=1.10
图书馆
hs源目录:src
公开模块:Lib
构建取决于:基础>=4.7&<5
默认语言:Haskell 2010
可执行hapidry exe
hs源目录:应用程序
main是:main.hs
ghc选项:-threaded-rtsopts-with-rtsopts=-N
构建取决于:基础
,hapidry
,鹪鹩
,配置文件
,伊森
,镜头
,cryptohash
,二进制
,mtl
,base16 bytestring
,bytestring
,货柜
,文本
,镜头埃森
,数据默认值
,optpass应用程序
,编码
默认语言:Haskell 2010
测试套件hapidry测试
类型:exitcode-stdio-1.0
hs源目录:测试
主要是:规格hs
构建取决于:基础
,hapidry
ghc选项:-threaded-rtsopts-with-rtsopts=-N
默认语言:Haskell 2010
源存储库负责人
类型:git
地点:-
最后,我编写了自己的编码函数。这似乎是可以接受的解决办法。另一个单字节编码的函数也可以用同样的方式实现
toCP1251 :: Text -> B.ByteString
toCP1251 = B.pack . T.unpack . T.map replace where
replace l = case (Map.lookup l table) of
(Just x) -> x
(Nothing) -> l
table = Map.fromList $ zip rus cpCodes
cpCodes = map toEnum (168:184:[192 .. 255]) :: [Char]
rus = ['Ё', 'ё', 'А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ж', 'З', 'И', 'Й', 'К', 'Л', 'М',
'Н', 'О', 'П', 'Р', 'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ъ', 'Ы',
'Ь', 'Э', 'Ю', 'Я', 'а', 'б', 'в', 'г', 'д', 'е', 'ж', 'з', 'и', 'й', 'к',
'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ',
'ъ', 'ы', 'ь', 'э', 'ю', 'я'] :: [Char]
最后,我编写了自己的编码函数。这似乎是可以接受的解决办法。另一个单字节编码的函数也可以用同样的方式实现
toCP1251 :: Text -> B.ByteString
toCP1251 = B.pack . T.unpack . T.map replace where
replace l = case (Map.lookup l table) of
(Just x) -> x
(Nothing) -> l
table = Map.fromList $ zip rus cpCodes
cpCodes = map toEnum (168:184:[192 .. 255]) :: [Char]
rus = ['Ё', 'ё', 'А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ж', 'З', 'И', 'Й', 'К', 'Л', 'М',
'Н', 'О', 'П', 'Р', 'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ъ', 'Ы',
'Ь', 'Э', 'Ю', 'Я', 'а', 'б', 'в', 'г', 'д', 'е', 'ж', 'з', 'и', 'й', 'к',
'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ',
'ъ', 'ы', 'ь', 'э', 'ю', 'я'] :: [Char]
能否提供您的
cabal
文件和stack.yaml
fileYes。我已经将它们添加到问题中。我曾经复制过错误-然后尝试单独安装编码(注意:这需要很长时间才能构建),然后尝试将所有库添加到lib部分(这似乎合理),然后构建,在将依赖项移回应用程序部分后,它将继续构建-因此现在我无法重现您的错误谢谢您的帮助!我复制了它,甚至在新的虚拟机创建Special为此(最后,我编写了我自己的转换为cp1251的函数,比我预期的要简单得多。你能添加这个作为答案吗?你能提供你的cabal
文件和stack.yaml
文件吗?是的。我已经将它们添加到问题中。我曾经复制过错误,然后尝试单独安装编码(注意:这需要花费很长时间来构建),然后尝试将所有库添加到lib部分(这似乎是合理的),然后进行构建,在将依赖项移回app部分后,它继续构建-因此现在我无法复制您的错误感谢您的帮助!我甚至在为此创建的新vm中复制了它(最后,我编写了自己的转换为cp1251的函数,比我预期的要简单得多。你能添加这个作为答案吗?