Подтвердить что ты не робот

Невозможно сделать производный экземпляр Num

Я использую ghci, этот раздел кода

newtype Gold = Gold Int
    deriving (Eq, Ord, Show, Num)

показывает ошибку как

Can't make a derived instance of 'Num Gold':
  'Num' is not a derivable class
  Try GeneralizedNewTypeDeriving for GHC newtype-deriving extension in the newtype declaration for 'Gold'

Пожалуйста, предложите решение.

4b9b3361

Ответ 1

Вы можете получать только из Eq, Ord, Enum, Bounded, Show и Read автоматически. Чтобы получить другие экземпляры, вам необходимо включить расширение GeneralizedNewtypeDeriving, поскольку GHCi предлагает:

{-# LANGUAGE GeneralizedNewtypeDeriving #-}

newtype Gold = Gold Int
  deriving (Eq, Ord, Show, Num)

Обратите внимание, что {-# ... #-} не является комментарием, а компилятором pragma, в этом случае разрешая заданное расширение языка.