Haskell中的模块化算法

mac*_*ian 3 math haskell modular

我会如何做一个功能,以便x具有介于值x=0x=19,如果x值超过19或低于零怎样才能得到它环绕

来自: x=20, x=21, x=22x=(-1), x=(-2), x=(-3)

到: x=0, x=1, x=2x=19, x=18, x=17 分别

我听说模块化算法显然是我应该处理它的方式.

Lan*_*dei 7

通常你会使用内置函数modrem,但我认为他们是对的功课禁地.所以你可以编写自己的函数,例如

mod20 x | x < 0 = ...
        | x > 19 = ...
        | otherwise = x
Run Code Online (Sandbox Code Playgroud)

你可以尝试填写不同的东西....最简单的一个是重复加法或减法,但我不想破坏所有的乐趣.

完成此功能后,您可以在每次"正常"算术运算后"重新调整"值,例如mod20 (12 + 17).

  • 当喂负数时,`mod`和`rem`表现不同; 对于正数,它们是相同的. (5认同)