我有一些类型C
带有一个函数,如果有的话,它应该给我下一个更大的数字。
这意味着对于整数类型它只是+1
,对于表示整数的超集的类型,它应该返回Nothing
,因为没有明确的下一个数字
{-# LANGUAGE FlexibleInstances, UndecidableInstances #-}
module Main where
class C a where
cIncr :: a -> Maybe a
instance Integral a => C a where
cIncr x = Just $ x + 1
instance Fractional a => C a where
cIncr _ = Nothing
这给了我以下错误:
Duplicate instance declarations:
instance Integral a => C a
-- Defined at src/File.hs:7
instance Fractional a => C a
-- Defined at src/File.hs:10
我不明白为什么会收到此错误 - 为什么/他们在哪里定义相同的实例?