Кабал не может установить даты и полугруппу - PullRequest
0 голосов
/ 02 июня 2018

Если я выполню $ cabal install semigroup, я получу ошибку

Data/Semigroup.hs:29:22: error:
Ambiguous occurrence ‘Semigroup’
It could refer to either ‘Prelude.Semigroup’,
                         imported from ‘Prelude’ at Data/Semigroup.hs:2:8-21
                         (and originally defined in ‘GHC.Base’)
                      or ‘Data.Semigroup.Semigroup’,
                         defined at Data/Semigroup.hs:22:1
   |
29 | instance Monoid a => Semigroup (Identity a) where
   |                      ^^^^^^^^^

(повторяющуюся в нескольких других случаях)

Аналогично, если я $ cabal install dates,

Data/Dates/Types.hs:62:10: error:
• No instance for (Semigroup DateTime)
    arising from the superclasses of an instance declaration
• In the instance declaration for ‘Monoid DateTime’
   |
62 | instance Monoid DateTime where
   |          ^^^^^^^^^^^^^^^
cabal: Leaving directory '/tmp/cabal-tmp-16926/dates-0.2.2.1'
cabal: Error: some packages failed to install:
dates-0.2.2.1-ILbYRzHuQkwCfqySpiVks0 failed during the building phase. The
exception was:
ExitFailure 1

Это ошибка?и как обойти это?

1 Ответ

0 голосов
/ 02 июня 2018

Класс полугруппы теперь является частью базы в GHC 8.4.x:

class Semigroup a where
  (<>) :: a -> a -> a
  GHC.Base.sconcat :: GHC.Base.NonEmpty a -> a
  GHC.Base.stimes :: Integral b => b -> a -> a
  {-# MINIMAL (<>) #-}
        -- Defined in ‘GHC.Base’

Но в более старых версиях GHC он не был частью базы и изначально жил в пакете semigroups.Старше, чем semigroups, является semigroup, который вы пытаетесь установить, и он также конфликтует с тем, что сейчас является частью base (спасибо @ Li-yao за комментарий).Таким образом, полугруппа, пакет, не должна использоваться с более новым ghc / base.

Ваша вторая проблема заключается в том, что версия dates не обновляется для новой базы, что требует, чтобы все экземпляры Monoid также былиЭкземпляр полугруппы:

class Semigroup a => Monoid a where
  mempty :: a
  mappend :: a -> a -> a
  mconcat :: [a] -> a
  {-# MINIMAL mempty #-}
        -- Defined in ‘GHC.Base’

Вы можете отправить сообщение о проблеме с пакетом dates.

...