繁体   English   中英

如何否定除特定数字之外的列表中的每个数字? 哈斯克尔

[英]How to negate every number on a list except a specific number? Haskell

我对 haskell 比较陌生,并且知道我们可以使用否定来否定列表。 否定不会否定 float、int 和 integer 类型的常规列表中的数字零。 但是如果你有一个不同数据类型的列表呢? 如果我否定不同的数据类型,那么该列表中的数字零也将被否定。 有没有办法不否定列表中的 0 和 0.0 之类的数字?

你说

否定不会否定 float 类型的常规列表中的数字零

但这种说法是不正确的。 看:

> negate 0 :: Float
-0.0
> negate 0 :: Double
-0.0
> map negate [0] :: [Float]
[-0.0]

其余代码的行为直接遵循这一事实。 为了进一步阅读,我强烈推荐每个计算机科学家应该知道的关于浮点运算的知识,其中包括对为什么浮点必须有一个不同于零的负零的深入讨论。 但简短的版本是第 201 页的这句话:

如果零没有符号,那么当 x = ±∞ 时,关系 (1/(1/x)) = x 将不成立。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM