Haskell 不能';不匹配预期的类型'Int';实际类型为[Int]平方和

Haskell 不能';不匹配预期的类型'Int';实际类型为[Int]平方和,haskell,Haskell,如果我理解正确,您需要定义一个函数,该函数以一个数字作为输入,并返回从1到(包括)该数字的平方和。您可以使用以下命令编写此函数: Couldn't match expected type ‘Integer -> t’ with actual type ‘Integer’ • The function ‘fsomaq’ is applied to one argument, but its type ‘Integer’ has none In the expression: fsoma

如果我理解正确,您需要定义一个函数,该函数以一个数字作为输入,并返回从1到(包括)该数字的平方和。您可以使用以下命令编写此函数:

 Couldn't match expected type ‘Integer -> t’ with actual type ‘Integer’ •

 The function ‘fsomaq’ is applied to one argument, but its type ‘Integer’ has none In the expression: fsomaq 10 In an equation for ‘it’: it = fsomaq 10 • Relevant bindings include it :: t (bound at :16:1)

你在一行中做的太多了。我建议你把它拆开,以便更清楚地解释解决方案。例如,从以下内容开始:

Prelude> fsomaq 0
0
Prelude> fsomaq 1
1
Prelude> fsomaq 2
5
Prelude> fsomaq 4
30
Prelude> fsomaq 8
204
Prelude> fsomaq 1425
965562425

请注意,这比您正在尝试的oneliner更容易阅读。我们还避免了您所犯的许多错误,包括括号不匹配和错误地重用变量名。

x=sum(takeWhile)(这没有多大意义。你想要的元素之和小于这些元素之和…对不起,我是新来的这里我想要的是一个极限x,然后我想要所有这些数字的平方和,例如:x=5(1,2,3,4,5)-(1*1+2*2+3*3+4*4+5*5)=显示这个结果你的例子应该像
sum那样解析(是的!我不需要takeWhile的东西,忘记了[1..x]谢谢,在这里工作得很好!谢谢,但现在我有一个不同的问题,我想乘矩阵NxN到目前为止我得到了main=do putStrLn“Digite'matriz'seguido do do tamanho(10010002000)”matriz::Int->[(Int,Int)]matriz let n=map(\x->map(\y->(x,y))[1..n])[1..n]但是我的计算机有问题,问题是,输入一个值n(10010002000),然后我必须计算矩阵乘以矩阵,例如100x100@Pedro遵循我在这里展示的相同技巧。将问题分解为非常小的部分。当你尝试了一些东西后,为每个问题发布一个新问题。
fsomaq :: (Num a, Enum a) => a -> a
fsomaq x = sum [n*n | n <- [1..x] ]
Prelude> fsomaq 0
0
Prelude> fsomaq 1
1
Prelude> fsomaq 2
5
Prelude> fsomaq 4
30
Prelude> fsomaq 8
204
Prelude> fsomaq 1425
965562425
list = [1..]
squares = [n*n | n <- list]
squaresLessThanX x = takeWhile (<x) squares
sumSquaresLessThanX x = sum $ squaresLessThanX x