Haskell 没有由文字‘;1.0’;
对于类,我们必须为给定的一组问题编写一些代码。其中一个问题是以[[Double]]的形式创建一个身份矩阵。到目前为止,我已经提出了以下代码。然而,当我试图编译时,我得到了以下错误,不确定我做错了什么或它意味着什么 代码: 错误:Haskell 没有由文字‘;1.0’;,haskell,Haskell,对于类,我们必须为给定的一组问题编写一些代码。其中一个问题是以[[Double]]的形式创建一个身份矩阵。到目前为止,我已经提出了以下代码。然而,当我试图编译时,我得到了以下错误,不确定我做错了什么或它意味着什么 代码: 错误: • No instance for (Fractional [[Double]]) arising from the literal ‘1.0’ • In the second argument of ‘(:)’, namely ‘1.0
• No instance for (Fractional [[Double]])
arising from the literal ‘1.0’
• In the second argument of ‘(:)’, namely ‘1.0’
In the expression: replicate (y - 1) 0.0 : 1.0
In an equation for ‘identHelper’:
identHelper y z
| z == 0 = ([1.0] ++ replicate (y - 1) 0.0) : identHelper y 1
| y == z = replicate (y - 1) 0.0 : 1.0
| otherwise
= (replicate z 0.0 ++ [1.0] ++ replicate (y - z - 1) 0.0)
: identHelper y (z + 1)
问题是
replicate (y-1) 0.0 : 1.0
顺便说一句,你可以(也应该)总是留下尾随的零,所以
replicate (y-1) 0 : 1
例如,说y=4
。然后这是
[0,0,0] : 1
因此,您正在尝试在。。。名单<代码>1。1
应该如何成为一个列表
我不确定你想要什么,但一个合理的选择是[[1]]
[0,0,0] : 1