来自haskell报告:
如果y不为零,则quot,rem,div和mod类方法满足这些定律:
Run Code Online (Sandbox Code Playgroud)(x `quot` y)*y + (x `rem` y) == x (x `div` y)*y + (x `mod` y) == x
quot
是整数除法被截断为零,而结果div
被截断为负无穷大.
例如:
Prelude> (-12) `quot` 5
-2
Prelude> (-12) `div` 5
-3
Run Code Online (Sandbox Code Playgroud)
结果如何截断的区别在哪里?
我在Haskell中创建了一个函数,它只将列表中的evens减半,我遇到了问题.当我运行编译器时,它抱怨你不能执行int的划分,并且我需要一个小数int类型声明.我已经尝试将类型声明更改为float,但这只是生成了另一个错误.我已经在下面包含了该函数的代码,并希望获得任何形式的帮助.
halfEvens :: [Int] -> [Int]
halfEvens [] = []
halfEvens (x:xs) | odd x = halfEvens xs
| otherwise = x/2:halfEvens xs
Run Code Online (Sandbox Code Playgroud)
谢谢你的阅读.