Переопределение fromInteger в Haskell
поэтому мне нравится Haskell, но я недоволен классом Num.
Поэтому я хочу сделать свой собственный иерархический класс для алгебраических типов.
Проблема в том, что даже если я импортирую Prelude hiding Num и все, что с ним связано, все равно единственный способ сделать литерал 1 иметь тип t-это сделать экземпляр t Num.
Я хотел бы сделать свой собственный класс fromInteger и полностью исключить Num из картины, как это
import Prelude hiding (everything having to do with Num)
import qualified Prelude (everything having to do with Num)
class (Eq fi) => FromInteger fi where
fromInteger :: Integral -> fi
foo :: (FromInteger fi) => fi -> String
foo 1 = "that was a one"
foo 0 = "that was a zero"
foo n = "that was neither zero nor one"
и тогда я бы реализовал fromInteger подходит для совершенно новых типов и никогда не должен ничего говорить о Num.
есть ли способ сказать парсеру использовать другой метод fromInteger?
спасибо!
1 ответов
вы ищете GHC в расширение RebindableSyntax.
включите его, поставив
{-# LANGUAGE RebindableSyntax #-}
в верхней части исходного файла.