Haskell中的模块化算法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Haskell中的模块化算法相关的知识,希望对你有一定的参考价值。

我将如何制作一个函数,以便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分别?

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

答案

通常你会使用内置函数modrem,但我认为它们不能用于家庭作业。所以你可以编写自己的函数,例如

mod20 x | x < 0 = ...
        | x > 19 = ...
        | otherwise = x

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

一旦你有了这个功能,你可以在每次“正常”算术运算之后“重新调整”这些值,例如mod20 (12 + 17)

另一答案

尝试使用mod函数:

(-5) `mod` 20 ==> 15
5 `mod` 20 ==> 5
20 `mod` 20 ==> 0
25 `mod` 20 ==> 5

另见wikipedia主题。

另一答案

使用

x `mod` 20

(这是一个填充物,可以回答30个字符。)

以上是关于Haskell中的模块化算法的主要内容,如果未能解决你的问题,请参考以下文章

解释 Haskell 广度优先编号代码遍历树

Haskell 中的模块化算术

如何使用模块化代码片段中的LeakCanary检测内存泄漏?

Haskell 导入模块

尝试为 Haskell 中的函数创建一个有效的算法

如何在 Haskell 中连接幻像类型中的元组?