我注意到我可以通过添加 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
的东西,如果没有,黑客维护者如何保持代码向后兼容?
您可以在此处和此处找到记录的宏。
这里的问题是包名称在这样的宏中被破坏;特别是,破折号被下划线取代。所以它应该是例如
{-# LANGUAGE CPP #-}
foo :: String
foo =
#if MIN_VERSION_optparse_applicative(0,13,0)
"x"
#else
"y"
#endif