gpt4 book ai didi

haskell - 如何在 GHC 中仅为旧版本定义功能?

转载 作者:行者123 更新时间:2023-12-04 06:26:53 25 4
gpt4 key购买 nike

我有一个使用 fromRight 的代码大约在 GHC 8.2 中定义的函数。但是我需要降级到 GHC 8.0.2,这给出了关于 Variable not in scope: 的错误为 fromRight
我想知道是否有可能以及如何添加缺少的定义

fromRight :: b -> Either a b -> b
fromRight _ (Right b) = b
fromRight b _ = b

以便它仅在我使用 8.2.1 之前的 GHC 版本时使用?

最佳答案

通常,当您想知道库函数时,您应该使用 CPP。

{-# language CPP #-}

#if !MIN_VERSION_base (4,10,0)
fromRight :: ...
#endif
MIN_VERSION_...过去由 Cabal 提供的宏;现在它们由 GHC 提供。如果你想在足够旧的 GHC 版本中使用它们,你需要使用 Cabal(使用 cabal-installstack)。

在你开始麻烦之前,请注意有几个包的名称以 -compat 结尾。为您完成所有工作。在这种情况下,您可以使用 fromRight来自 Data.Either.Compat base-compat包裹。那你就不用在意你用的够不够新 base图书馆。

关于haskell - 如何在 GHC 中仅为旧版本定义功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47065477/

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