Haskell Parsec3被parsec阻止了,我到底做了什么

Haskell Parsec3被parsec阻止了,我到底做了什么,haskell,text,package-managers,parsec,Haskell,Text,Package Managers,Parsec,使用如下所示的阴谋集团文件(相关库部分): 构建依赖于:base>=4.8&&=1.4&&&=1.5&&=0.10&&=2.7&&=0.11&&=0.4&&=0.5,text>=1.2&&=0.1.1&=1&=1.2&&=0.9&=0.94&=0.93,sqlite=0.2&=0.3&Parser Double是的,您是对的。我现在修复了它。引用的错误不是关于约束解决,而是关于名称解析。所以“只使用堆栈”的下意识反应显然是不够的。我仍然会尝试一个阴

使用如下所示的阴谋集团文件(相关库部分):

构建依赖于:base>=4.8&&<4.9,filepath>=1.4&&&=1.5&&=0.10&&=2.7&&=0.11&&=0.4&&=0.5,text>=1.2&&=0.1.1&<1.2,utf8字符串>=1&<1.1,目录>=1.2&&=0.9&<1.0,正则表达式pcre>=0.94&<0.95,正则表达式base>=0.93,sqlite=0.2&=0.3&<0.1&<0.1,parsec3编号>=0.1&&<0.2,parsec3>=1.0&&ghci-隐藏包parsec编号 GHCi,7.10.3版:http://www.haskell.org/ghc/ :? 求救 :无法满足-隐藏包解析编号 (有关详细信息,请使用-v)
FWIW,我能够用堆栈解析器lts-5.13和lts-6.0满足您的所有约束

我想你的包裹有问题。我会尝试使用阴谋集团沙箱和/或使用
stack

如果使用
stack
,只需将它们添加到
stack.yaml
文件中的
额外deps:
部分:

extra-deps:
- parsec3-numbers-0.1.0
- parsec3-1.0.1.8

parsec3编号的.cabal文件中有:

flag parsec3
    Description: Use parsec3
    Default: False

Library
  exposed-modules:
    Text.Parsec.Number
  if flag(parsec3)
      build-depends: parsec3
  else
      build-depends: parsec

因此,我打赌您希望使用
-f parsec3
选项构建
parsec3编号

标准做法是生成一个最小的工作示例(此处“工作”表示“生成您引用的错误”)。对于阴谋集团问题,理想情况下至少包括一个最小化的
.cabal
文件和一个最小化的
.hs
文件。您已经暗示了每个问题的一些内容,但是没有足够的细节来重现您的问题。顺便说一句,
floating2
的签名应该是
Bool->Parser Double
是的,您是对的。我现在修复了它。引用的错误不是关于约束解决,而是关于名称解析。所以“只使用堆栈”的下意识反应显然是不够的。我仍然会尝试一个阴谋沙箱和/或堆栈,以确保我们有一个干净的构建,并缓解pkg db的损坏。我在
构建依赖中看不到任何直接或间接引入
parsec
-是吗?
parsec3数字
依赖于
parsec
。好了,开始吧!这并不能解释任何事情,事实上,这一直是我的观点:这个问题并没有提供足够的信息让我们判断出哪里出了问题。所以我们应该写评论来获取这些信息,而不是那些不能解决问题的即兴回答。太棒了!是的,parsec3拉入了parsec,尽管我试图阻止它。重新编译解决了所有问题!谢谢下次使用
ghci-忽略包解析测试。hs
导致“无法加载“Text.parsec.Number.”的接口,
ghci-忽略包解析测试-包解析测试。hs
导致“无法满足-包parsec3编号:parsec3-numbers-0.1.0-5ewSm5c1kZOI1sNlSx7Ecm因缺少或递归依赖项而不可用:parsec-3.1.11-37J7M1YEHQTEOY7BPJDRI”
import Text.Parsec.Text
import Text.Parsec
import Text.Parsec.Number

num:: Bool -> Parser Double
num = floating2
> cd ~ # Move outside of any cabal package
> ghci -hide-package parsec # Parsec should now not be pulled in
GHCi, version 7.10.3: http://www.haskell.org/ghc/  :? for help
Prelude> :l test.hs
[1 of 1] Compiling Main             ( test.hs, interpreted )

test.hs:6:7:
    Couldn't match type ‘parsec-3.1.9:Text.Parsec.Prim.ParsecT
                           s0 u0 m0 Double’
                   with ‘ParsecT
                           Data.Text.Internal.Text () Data.Functor.Identity.Identity Double’
    NB: ‘parsec-3.1.9:Text.Parsec.Prim.ParsecT’
          is defined in ‘Text.Parsec.Prim’ in package ‘parsec-3.1.9’
        ‘ParsecT’
          is defined in ‘Text.Parsec.Prim’ in package ‘parsec3-1.0.1.8’
    Expected type: Parser a -> Parser Double
      Actual type: Bool
                   -> parsec-3.1.9:Text.Parsec.Prim.ParsecT s0 u0 m0 Double
    In the expression: floating2
    In an equation for ‘num’: num = floating2
Failed, modules loaded: none.
>  ghci -hide-package parsec-numbers
GHCi, version 7.10.3: http://www.haskell.org/ghc/  :? for help
<command line>: cannot satisfy -hide-package parsec-numbers
    (use -v for more information)
extra-deps:
- parsec3-numbers-0.1.0
- parsec3-1.0.1.8
flag parsec3
    Description: Use parsec3
    Default: False

Library
  exposed-modules:
    Text.Parsec.Number
  if flag(parsec3)
      build-depends: parsec3
  else
      build-depends: parsec