I have a code that uses the fromRight
function defined circa GHC 8.2. But I need to downgrade to GHC 8.0.2, which gives an error about Variable not in scope:
for fromRight
I was wondering if it possible and how to add the missing definition
fromRight :: b -> Either a b -> b
fromRight _ (Right b) = b
fromRight b _ = b
so that it is only used when I use an GHC version than 8.2.1?
You can always write
which is valid even if
fromRight
does not exist in Prelude. Therefore, if you want to write a module which is compatible with both old and new versions of Prelude, you can simply choose to ignore the newfromRight
function, and always use the one in your library.Usually, when you're wondering about a library function, you should use CPP.
The
MIN_VERSION_...
macros used to be provided by Cabal; now they're provided by GHC. If you want to use them with sufficiently old versions of GHC, you'll need to use Cabal (using eithercabal-install
orstack
).Before you go to the trouble of doing this, note that there are several packages with names ending in
-compat
that do all the work for you. In this case, you can use thefromRight
fromData.Either.Compat
in thebase-compat
package. Then you don't have to care whether you're using a new enoughbase
library.