{-#LANGUAGE值得信赖#-}
{-#LANGUAGE CPP、NoImplicitFlave、MagicHash、UnboxedCouples#-}
{-#OPTIONS_HADDOCK非本地#-}

-----------------------------------------------------------------------------
--|
--模块:GHC。号码
--版权所有:(c)格拉斯哥大学1994-2002
--许可证:请参阅库/基础/许可证
--
--维护人员:cvs-ghc@haskell.org
--稳定性:内部
--便携性:非便携(GHC扩展)
--
--“Num”类和“Integer”类型。
--
-----------------------------------------------------------------------------


模块 GHC。号码 (模块 GHC。号码 模块 GHC。整数 模块 GHC。自然) 哪里#包括“MachDeps.h”
进口 GHC。底座
进口 GHC。整数
进口 GHC。自然

中缀 7  *
中缀 6  + -

违约 ()              --双人间还不可用,
                        --无论如何我们都不应该使用默认值

--|基本数值类。
--
--哈斯克尔报告没有为“数字”定义任何法律。然而,@('+')@和@('*')@是
--通常预期定义一个环并具有以下属性:
--
--[__@('+')@__]的关联性:@(x+y)+z@=@x+(y+z)@
--[__@('+')@__]的交换性:@x+y@=@y+x@
--[__@'fromInteger'0@是加法恒等式__]:@x+fromIntiger 0@=@x@
--[__'negate'给出加法倒数__]:@x+negate x@=@fromInteger 0@
--[__@('*')@__]的关联性:@(x*y)*z@=@x*(y*z)@
--[__@'fromInteger'1@是乘法恒等式__]:
--@x*fromInteger 1@=@x@和@fromInteger 1*x@=@x@
--[__@('*')@相对于@('+')@__]的分布性:
--@a*(b+c)@=@(a*b)+(a*c)@和@(b+c)*a@@=@(b*a)+(c*a)@
--
--请注意,通常预期两个“Num”的类型实例
--和“Ord”实现了一个有序环。实际上,在@base@中只有“Integer”和
--'数据。比率。理性的做法。
  号码   哪里
    {-#最小 (+) (*) 防抱死制动系统 符号 from整数 (否定 | (-)) #-}

    (+) (-) (*)       ::  ->  -> 
    --|一元否定。
    否定              ::  -> 
    --|绝对值。
    防抱死制动系统                 ::  -> 
    --|数字的符号。
    --“abs”和“signum”功能应满足法律要求:
    --
    -->abs x*符号x==x
    --
    --对于实数,“符号”要么是@-1@(负数),要么是@0@(零)
    --或@1@(正)。
    符号              ::  -> 
    --|从“整数”转换。
    --整数文字表示函数的应用
    --将“fromInteger”设置为“Integer“类型的适当值,
    --因此,此类文字的类型为@('Num'a)=>a@。
    from整数         :: 整数 -> 

    {-#内联 (-) #-}
    {-#内联 否定 #-}
    x个 -                = x个 a->a->a对于所有a.数字a=>a->a->a+ a->a对于所有a.数字a=>a->a否定 
    否定 x个            = 0 a->a->a对于所有a.数字a=>a->a->a- x个

--|与@'flip'('-')@相同。
--
--因为“-@”在Haskell语法中是专门处理的,
--@(-@@/e/@)@不是节,而是前缀否定的应用程序。
--但是,@('subtract'@/exp/@)@相当于不允许的部分。
{-#内联 减去 #-}
减去 :: (号码 ) =>  ->  -> 
减法::a->a->a减去 x个  =  a->a->a对于所有a.数字a=>a->a->a- x个

--自2.01起|@
实例  号码 国际  哪里
    我# 国际#x个 +::Int->Int->Int+ 我# 国际# = 整数->整数我# (国际#x个 Int#->Int#->内部#+# 国际#)
    我# 国际#x个 -::Int->Int->Int- 我# 国际# = 整数->整数我# (国际#x个 Int#->Int#->内部#-# 国际#)
    取反::Int->Int否定 (我# 国际#x个) = 整数->整数我# (Int#->Int内部#否定Int# 国际#x个)
    我# 国际#x个 *::Int->Int->Int* 我# 国际# = 整数->整数我# (国际#x个 Int#->Int#->内部#*# 国际#)
    腹肌::Int->Int防抱死制动系统 国际n个  = 如果 国际n个 国际->国际->布尔`geInt公司` 国际0 然后 国际n个 其他的 国际->国际对于所有a.数字a=>a->a否定 国际n个

    符号::Int->Int符号 国际n个 | 国际n个 国际->国际->布尔`长期利息` 国际0 = 国际->国际对于所有a.数字a=>a->a否定 国际1
             | 国际n个 国际->国际->布尔`eqInt公司` 国际0 = 国际0
             | 布尔否则   = 国际1

    {-#内联 from整数 #-}   --只是为了确定!
    fromInteger::Integer->Intfrom整数 整数 = 整数->整数我# (整数->整数#积分ToInt 整数)

--|@自2.01起
实例 号码 单词 哪里
    (W公司# 单词#x个#) +::单词->单词->单词+ (W公司# 单词#年#)      = 单词#->单词W公司# (单词#x个# 单词#->单词#->Word#`加号Word#` 单词#年#)
    (W公司# 单词#x个#) -::单词->单词->单词- (W公司# 单词#年#)      = 单词#->单词W公司# (单词#x个# 单词#->单词#->Word#`减去单词#` 单词#年#)
    (W公司# 单词#x个#) *::Word->Word->Word* (W公司# 单词#年#)      = 单词#->单词W公司# (单词#x个# 单词#->单词#->Word#`timesWord#` 单词#年#)
    否定::Word->Word否定 (W公司# 单词#x个#)         = 单词#->WordW公司# (Int#->单词#int2字# (整数->整数#否定Int# (单词#->Int#单词2Int# 单词#x个#)))
    abs::Word->Word防抱死制动系统 单词x个                  = 单词x个
    符号::Word->Word符号 单词0               = 单词0
    符号 单词_               = 单词1
    fromInteger::Integer->字from整数 整数          = 单词#->单词W公司# (整数->字#集成到单词 整数)

--自2.01起|@
实例  数字 整数  哪里
    +::整数->整数->整数(+) = 整数->整数->整数加号整数
    (-) = 整数->整数->整数减去整数
    *::整数->整数->整数(*) = 整数->整数->整数时间整数
    取反::Integer->Integer否定         = 整数->整数取反整数
    fromInteger::Integer->Integerfrom整数 整数x个  =  整数x个

    abs::整数->整数防抱死制动系统 = 整数->整数绝对整数
    符号::Integer->Integer符号 = 整数->整数符号整数

--|请注意,“Natural”的“Num”实例不是一个环:没有元素,但0有一个
--加性逆。但这是一个半环。
--
--@自4.8.0.0起
实例  号码 自然  哪里
    +::自然->自然->自然(+) = 自然->自然->自然plus天然
    (-) = 自然->自然->自然减自然
    *::自然->自然->自然(*) = 自然->自然->自然times自然
    否定::自然->自然否定      = 自然->自然否定自然
    fromInteger::Integer->自然from整数 = 整数->自然naturalFrom整数

    腹肌::自然->自然防抱死制动系统 = 自然->自然对于所有a.a->a身份证件
    符号::自然->自然符号 = 自然->自然符号自然