sti*_*tes 4 compatibility haskell backwards-compatibility
我注意到我可以通过添加CPP条件来向后兼容base,如下所示:
moo :: Moo
moo = Moo
{ happyMoo = Sound "moo"
#if MIN_VERSION_base(4,9,1)
, upgradedMoo = Sound "moo"
#endif
, sadMoo = Sound "moo"
}
Run Code Online (Sandbox Code Playgroud)
但是当我指定包级依赖(即:使用类似的东西#if MIN_VERSION_optparse-applicative(0,13,0))时我得到一个错误,并且我很难找到关于这个GHC功能的文档.
我想知道是否MIN_VERSION_optparse-applicative存在这样的东西,如果没有,hackage维护者如何保持代码向后兼容?
这里的问题是包名称在这些宏中被破坏了; 特别是,破折号被下划线取代.所以它应该是例如
{-# LANGUAGE CPP #-}
foo :: String
foo =
#if MIN_VERSION_optparse_applicative(0,13,0)
"x"
#else
"y"
#endif
Run Code Online (Sandbox Code Playgroud)