math - 函数式编程中的求和

标签 math haskell functional-programming scheme set

我在网上搜索排除-包含原则,我发现的是:

Formula
(来自 MathWorld - Wolfram 网络资源: wolfram.com )

http://mathworld.wolfram.com/Inclusion-ExclusionPrinciple.html

不懂公式没关系,其实我需要的是实现这个:

enter image description here

例如,输入是:

(summation (list 1 2) 3) Where (list 1 2) is i and j and 3 is the limit of the sum n.



(n 必须达到 sigma 但...)

然后,Scheme 中公式的输出将是:

(list (list 1 2) (list 1 3) (list 2 3))



我如何在 Scheme 或 Haskell 中实现它? (对不起我的英语不好)。

最佳答案

在 Haskell 中,使用列表推导式:

Prelude> [(i,j) | i <- [1..4], j <- [i+1..4]]
[(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)]
Prelude> [i * j | i <- [1..4], j <- [i+1..4]]
[2,3,4,6,8,12]
Prelude> sum [i * j | i <- [1..4], j <- [i+1..4]]
35

第一行给出了所有对 (i,j) 的列表,其中 1 <= i < j <= 4

第二行给出了 i*j 的列表,其中 1 <= i < j <= 4

第三行给出了这些值的总和:Σ1 <= i < j <= 4 i*j。

关于math - 函数式编程中的求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8001890/

相关文章:

python - 如何忽略列表中的高偏差

math - 如何在 5x5 矩阵中分配 5 位数字

haskell - 使用状态 monad 的欧拉项目 14

javascript - Mithril js - 跨组件通信模式

java - 如何使我的阶乘方法适用于小数? ( Gamma )

math - 如何除以一个奇数留下两个整数?

haskell - 如何在 Gloss Haskell 中实现多个级别?

haskell - 寻找 «instance (Enum a, Bounded a) => IArray UArray a»

lambda - 没有自由变量的语言

haskell - 如何修复这种嵌套 fmap 仿函数的困惑?