- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我仍在学习值(value)构造函数的工作原理。我阅读了很多有关数据类型及其值构造函数的内容。问题是我从未在实践中见过它们。例如
data Nat = Zero | Succ Nat
现在,如果我们想定义一个接受两个 Nat 输入并返回乘积的函数,我们该怎么做?如果我们想使用运算符 *,我们必须将它们转换为 Haskell Integrals。如果我们想实现一个 mult 函数,它接受两个 Nat,应该将它们相乘而不将它们转换为 Haskel Integrals,那会是什么样子?
我真的还没有得到数据类型|值构造函数。谁能从上面的数据 Nat 示例中说明如何正确使用此类值构造函数?
最佳答案
你可以实现mult :: Nat -> Nat -> Nat
无需将参数转换为 Integer
第一的。什么是乘法?就是重复相加,可以递归定义:
n * 0 == 0
n * m == n + n * (m - 1)
回想一下 m - 1
是 Nat
的值由 Succ
包裹;如果m == Succ k
, 然后 k
代表m - 1
.考虑到这一点,您应该能够看到如何定义 mult
,假设您定义了 add :: Nat -> Nat -> Nat
可用。
mult :: Nat -> Nat -> Nat
mult n Zero = ...
mult n (Succ m) = ...
add :: Nat -> Nat -> Nat
可以类似地定义,使用基于重复递增的定义。
-- n + 0 = n
-- n + m = (n + 1) + (m - 1)
def add :: Nat -> Nat -> Nat
add n Zero = ...
add n (Succ m) = ...
关于haskell - 如何定义一个接受数据类型的自然数并返回它们的总和的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59306230/
我不知道引用引用的对象的值如何。顺便说一句,我不是在谈论整数。 我想做这个方法。 swapNN(NaturalNumber j, NaturalNumber n) 我希望交换 j 和 n 的引用,但是
给定一个向量 v w [1] -2 -1 0 1 2 3 4 7 8 9 10 11 12 13 19 20 21 22 23 24 25 最佳答案 另一种方法是 c(t(sapp
给定前 n 个自然数的 k 组合,出于某种原因,我需要在 itertools 返回的那些组合中找到这种组合的位置。 combination(range(1,n),k)(原因是这样我可以使用 list
在根据代码摘录识别复杂性或最坏情况时,我了解什么是大 O 表示法。 在类里面,我被教导说,当谈到复杂性和大 O 表示法时,我们忽略低于 M 的小参数 n 和常数因子 C 。 这是在类里面给我的: In
我需要编写一个算法来解决这个练习,有什么建议吗? 练习: 我们有一个矩形,分成 n x m 个正方形,每个正方形都是自然数。编写一个函数来计算这个矩形内有多少个幻方。 幻方是 k x k (k>=2)
我是一名优秀的程序员,十分优秀!