我试图使用for循环为某些变量分配一些矩阵.但我无法实现.我可能知道我的错误在哪里,但我不知道是否有办法克服它
N = 10;
for i = 1:1:N
P(i) = [x(i)^2 x(i)*y(i);
x(i)*y(i) y(i)^2];
end
K = blkdiag(P);
Run Code Online (Sandbox Code Playgroud)
我想为P(i)分配一个矩阵,然后使用那些P(i)来创建一个块对角矩阵.但似乎我不能这样做.有没有其他方法来创建这样的块对角矩阵?
这是我的最小例子:
{-# LANGUAGE MultiParamTypeClasses, RankNTypes #-}
import Control.Lens
class Into outer inner where
factory :: inner -> outer
merge :: inner -> inner -> inner
-- Given an inner item, a lens and an outer item, use factory to construct a new
-- outer around the inner if the Maybe outer is Nothing, or else use merge to combine
-- the argument inner with the one viewed through the lens inside the outer
into :: Into outer inner =>
inner …Run Code Online (Sandbox Code Playgroud) 由于更新了依赖关系,Haskell程序包(我们称其为程序包A)已停止为我编译,并且出现有关未定义变量的错误。我可以访问一个旧的依赖环境,在该环境中仍可以编译完全相同的代码,因此我可以在GHCi中打开该模块,并使用它:info来跟踪其最初来自何处,从而将我引到B包中。
麻烦的是,A中已损坏的模块无法直接从B导入定义此丢失标识符的模块。它一定是通过另一个将其重新导出的导入获取的。但是在这两种环境之间,A和B都没有改变。因此,这意味着第三个程序包C中的模块必须先前已经从B导入并重新导出了我的标识符,然后才能由A中的损坏模块导入(可能通过进一步的重新导出),并且C在两个环境中不再重新导出标识符。
我可以在工作环境中以某种方式向GHC或Cabal索要完整的进口链,从而导致标识符在范围内,以便我可以识别包装C吗?否则,我不知道如何来缩小问题的原因,而无需手动审查所有的(传递)的依赖关系一个能够从振振有词进口的东西乙。
REPL会话中的以下代码:
case class Foo(x : Int)
case class Bar(x : Int)
case class Converter(y : Int) {
def convert(x : Int) = x + y
}
implicit def fooFromBar(b : Bar)(implicit c : Converter) = Foo(c convert (b x))
def roundaboutFoo(x : Int, converter : Converter) : Foo = Bar(x)
Run Code Online (Sandbox Code Playgroud)
给我这个错误:
错误:找不到参数c的隐含值:转换器def roundaboutFoo(x:Int,converter:Converter):Foo = Bar(x)
如果它不明显(暗示),我正在尝试做的是Bar(x)隐式转换为a Foo.隐式转换本身虽然是通过隐式参数化的Converter.我想要使用此转换的时间都有一个Converter可用的实例作为方法的参数.
我半预计将不能够从发现的隐式转换死Bar到Foo,由于fooFromBar不是从一个简单的函数Foo来Bar,但我读的这个问题是隐式转换可以有隐含参数,实际上编译器似乎有部分出来了.
我发现了另一个问题,详细解答了Scala寻找填充内容的地方.但它只证实了我之前的理解:Scala在直接范围内首先看起来,然后是其他一些与此无关的地方. …