gpt4 book ai didi

haskell - 我可以将 cpp MIN_VERSION 条件用于 haskell 包吗?

转载 作者:行者123 更新时间:2023-12-05 00:49:44 25 4
gpt4 key购买 nike

我注意到我可以通过添加 CPP 条件来获得与 base 的向后兼容性,如下所示:

moo :: Moo
moo = Moo
{ happyMoo = Sound "moo"
#if MIN_VERSION_base(4,9,1)
, upgradedMoo = Sound "moo"
#endif
, sadMoo = Sound "moo"
}

但是,当我指定包级依赖项(即:使用类似 #if MIN_VERSION_optparse-applicative(0,13,0) 之类的东西)时出现错误,而且我很难找到有关此 GHC 功能的文档。

我想知道是否有类似 MIN_VERSION_optparse-applicative 的东西存在,如果不存在,hackage 维护者如何保持代码向后兼容?

最佳答案

您可以找到记录在案的宏 herehere .

这里的问题是包名在这样的宏中被破坏了;特别是,破折号被下划线取代。所以它应该是例如

{-# LANGUAGE CPP #-}

foo :: String
foo =
#if MIN_VERSION_optparse_applicative(0,13,0)
"x"
#else
"y"
#endif

关于haskell - 我可以将 cpp MIN_VERSION 条件用于 haskell 包吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47080310/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com