Car*_*ess 4 math scheme haskell functional-programming set
我在网上搜索排除 - 包含原则,我发现的是:
公式http://mathworld.wolfram.com/images/equations/Inclusion-ExclusionPrinciple/NumberedEquation3.gif
http://mathworld.wolfram.com/Inclusion-ExclusionPrinciple.html
如果你不理解这个公式我没关系,事实上,我需要的是实现这个:

例如,输入是:
(summation (list 1 2) 3)其中(列表1 2)是i和j,3是和n的限制.
(n必须是sigma,但......)
然后,Scheme中的公式输出将是:
(清单(清单1 2)(清单1 3)(清单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
Run Code Online (Sandbox Code Playgroud)
第一行给出所有对(i,j)的列表,其中1 <= i <j <= 4
第二行给出i*j的列表,其中1 <= i <j <= 4
第三行给出这些值的总和:Σ1 <= i <j <= 4 i*j.