gpt4 book ai didi

Haskell - `div` 的奇怪截断行为

转载 作者:行者123 更新时间:2023-12-01 08:25:13 24 4
gpt4 key购买 nike

在 ghci 中我得到以下信息:

λ> -1 `div` 2
0

但是:

λ> map (`div` 2) [-1]
[-1]

当我使用函数divPair时出现问题:

divPair :: (Int, Int) -> Int -> (Int, Int)
divPair (a, b) n = (a `div` n, b `div` n)

λ> divPair (-1, -2) 2
(-1,-1)

这真的让我很惊讶,因为我预计它会产生 (0, -1)

这里发生了什么?我想我对 Haskell 中的 div 不是很了解。

最佳答案

这是因为 -1 `div` 2 实际上被解析为 -(1 `div` 2) 等于 -0 或者只是0 因为 1 `div` 2 等于 0。你应该使用 (-1) `div` 2

Prelude> -(1 `div` 2)
0
Prelude> (-1) `div` 2
-1

关于Haskell - `div` 的奇怪截断行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37376772/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com