相关疑难解决方法(0)

Haskell范围和浮动

为什么浮点数的Haskell范围符号的行为与整数和字符的行为不同?

Prelude> [1, 3 .. 10] :: [Int]
[1,3,5,7,9] 
Prelude> [1, 3 .. 10] :: [Float]
[1.0,3.0,5.0,7.0,9.0,11.0]
Prelude> ['a', 'c' .. 'f']
"ace"
Run Code Online (Sandbox Code Playgroud)

如果最后一个元素接近上限,我会理解它,但这显然不是一个舍入问题.

floating-point haskell range-notation

42
推荐指数
2
解决办法
5368
查看次数

为什么map在Haskell中使用范围时会返回一个额外的元素?

我刚开始学习Haskell并发现了一件奇怪的事情.

我们有一个清单:

ghci> [0,2..5]
[0,2,4]
Run Code Online (Sandbox Code Playgroud)

它有3个元素.当我使用map这个列表时,我得到3个元素作为输出,例如:

ghci> map (+ 1) [0,2..5]
[1,3,5]
ghci> map (* 2) [0,2..5]
[0,4,8]
ghci> map (`div` 2) [0,2..5]
[0,1,2]
Run Code Online (Sandbox Code Playgroud)

但是当我使用小数除法时,我在输出列表中得到4个元素:

ghci> map (/ 2) [0,2..5]
[0.0,1.0,2.0,3.0]
ghci> length (map (/ 2) [0,2..5])
4
Run Code Online (Sandbox Code Playgroud)

你能否解释为什么map可能会返回更多的元素呢?

谢谢!

haskell range division

8
推荐指数
1
解决办法
119
查看次数