base-feature-macros: Semantic CPP feature macros for base
This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.
This provides a set of feature macros describing features of base
in a semantic way.
See <base-feature-macros.h> for the set of currently provided macros.
In order to use the CPP header provided by this package, add this package as a dependency to your .cabal
file, i.e.
build-depends: base-feature-macros: >= 0.1 && < 0.2
while making sure that the version specified as lower bound defines the feature-macros your code tests for. This is particularly important as CPP will implicitly treat undefined CPP macros as having the value 0
. See also GNU CPP/CC's -Wundef
warning to detect such errors;
or starting with GHC 8.2, -Wcpp-undef can be used:
if impl(ghc >= 8.2) ghc-options: -Wcpp-undef
Then in your code, you can include and use the <base-feature-macros.h>
header like so
module M where #include <base-feature-macros.h> #if !HAVE_FOLDABLE_TRAVERSABLE_IN_PRELUDE import Data.Foldable (Foldable (..)) import Prelude hiding (foldr, foldr1) #endif #if !HAVE_MONOID_IN_PRELUDE import Data.Monoid hiding ((<>)) #endif
This package is inspired by the blogpost "Make macros mean something – readable backwards compatibility with CPP".
Properties
Versions | 0.1, 0.1.0.1, 0.1.0.1 |
---|---|
Change log | ChangeLog.md |
Dependencies | base (>=4.3 && <4.11) [details] |
License | BSD-3-Clause |
Author | Herbert Valerio Riedel |
Maintainer | hvr@gnu.org |
Category | Development |
Bug tracker | https://github.com/hvr/base-feature-macros/issues |
Source repo | head: git clone https://github.com/hvr/base-feature-macros.git |
Uploaded | by HerbertValerioRiedel at 2017-06-05T22:08:49Z |
Downloads
- base-feature-macros-0.1.0.1.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
Maintainer's Corner
Package maintainers
For package maintainers and hackage trustees