我已经创建了一个函数,我可以使用(据我所知)案例表达或守卫.
foo a b c = case a of 1 -> [...]
2 -> [...]
3 -> [...]
[...]
otherwise -> error "..."
Run Code Online (Sandbox Code Playgroud)
要么
foo a b c | a == 1 = [...]
| a == 2 = [...]
| a == 3 = [...]
| [...]
| otherwise = error "..."
Run Code Online (Sandbox Code Playgroud)
所以,问题是:那两个(案件或警卫)中的哪一个是"更好"的编码?两者基本相同吗?
我有一个列表xxs
,我需要创建一个新的,添加和总结旧列表中的元素.
让我画它来证明:
所以,我有这个清单:
xxs = [("a","b", [(1,"a","b"),(2,"a","b")]), ("c","d",[(3,"a","b"),(4,"a","b")])]
Run Code Online (Sandbox Code Playgroud)
到目前为止,我最好的方法是:
infoBasicas = [ (x,y,aux) | (x,y,_) <- xxs]
where aux = sum [ z | (_,_,ys) <- xxs, (z,_,_) <- ys]
Run Code Online (Sandbox Code Playgroud)
输出:
[("a","b",10),("c","d",10)]
Run Code Online (Sandbox Code Playgroud)
虽然我并不遥远......我还没到那里,我真的很感激一些建议.
我有以下列表(这是一个长度为2的列表,但在我的作业中我有一个长度+ n列表)
xxs = [(11,22,[(33,33,33),(44,44,44)]),(55,66,[(77,77,77),(88,88,88)])]
Run Code Online (Sandbox Code Playgroud)
我试图通过列表索引(n
)和子列表索引(p
)来"替换"一个3元组(p1或p2或p3或p4,从下面的图像).
该函数最后应该是这样的:
fooo newtuple n p = (…)
Run Code Online (Sandbox Code Playgroud)
例如:(将p3替换为(98,98,98):
fooo (98,98,98) 2 1
[(11, 22, [(33,33,33) , (44,44,44)]) , (55, 66, [(98,98,98),(88,88,88)])]
Run Code Online (Sandbox Code Playgroud)
我按照以下步骤计划了代码:
访问我想要更改的pn.我设法通过以下方式实现:
fob n p = ((aux2 xxs)!!n)!!p
where aux2 [] = []
aux2 ((_,_,c):xs) = c:aux2 xs
Run Code Online (Sandbox Code Playgroud)"替换"3元组.我真的需要一些帮助.我被卡住了.我做过的最好的代码(在我脑海里有点意义):(记住:我的代码请不要太糟糕,我只研究Haskell 5周)
foo n p newtuple = fooAux newtuple fob
where fooAux _ [] = []
fooAux m ((_):ds) = m:ds
fob n p = ((aux2 xxs)!!n)!!p
where aux2 [] = …
Run Code Online (Sandbox Code Playgroud)我正在编写一些功课(101级).当我尝试编译代码时,我得到了一些来自防御者的病毒警报:
#include <stdio.h>
int main ( void ) {
int numbers [10];
int i, temp;
for (i = 1; i <= 10; ++i)
numbers[i] = 0;
printf("Enter up to 10 integers. input '-1' to finish \n");
for (i = 0; i < 10; i++) {
scanf("%d", &temp);
if (temp == -1) {
break;
} else {
numbers [i] = temp - 1;
}
}
for (i = 1; i <= 10; ++i)
printf("the numbers are: %d\n", numbers[i]);
return 0;
} …
Run Code Online (Sandbox Code Playgroud) 我是新编程的东西:/
我需要创建一个函数来检索3元组列表中第一个元素的总和.
我有类似的东西:
tuples = [(11,"11","11"),(22,"22","22"),(33,"33","33"),(44,"44","44"),(55,"55","55"),(66,"66","66")]
Run Code Online (Sandbox Code Playgroud)
我需要列表中每个3元组的第一个元素的总和.= 11 + 22 + 33 + 44 + 55
模式匹配可能吗?地图?