我将我的数据类型声明为类的实例Num
并仅实现方法 sum (+)
。其他方法,如(*)
, negate
, abs
,fromInteger
等。我没有实现。原因是我的数据类型不需要这些方法。
我编译了程序,除了一些令人不舒服的警告之外,一切正常,例如:
Warning: No explicit method nor default method for `*'
...
我怎样才能避免这些警告,或者我需要实现上述方法?实际上,我不想实现它们。
我将我的数据类型声明为类的实例Num
并仅实现方法 sum (+)
。其他方法,如(*)
, negate
, abs
,fromInteger
等。我没有实现。原因是我的数据类型不需要这些方法。
我编译了程序,除了一些令人不舒服的警告之外,一切正常,例如:
Warning: No explicit method nor default method for `*'
...
我怎样才能避免这些警告,或者我需要实现上述方法?实际上,我不想实现它们。
您可以使用命令行标志(在 GHC 中)使这些警告静音
ghc -fno-warn-missing-methods YourFile.hs
但是,如果您只想实现加法,那么将您的类型设置为Num
. 如果您只想对类型的操作有一个不错的运算符,您可以定义自己的,(+)
如果您甚至可以重用
import Prelude hiding ((+))
import qualified Prelude -- so that (+) can be still used in qualified form
您始终可以undefined
用作占位符值;它的类型是a
simple ,所以它总是进行类型检查。不过要小心,评估它会在运行时抛出异常。
data Foo = Bar | Baz
instance Eq Foo where
Bar == Bar = True
Baz == Baz = True
(/=) = undefined