如何在Scala中定义类型?喜欢
type MySparseVector = [(Int, Double)]
Run Code Online (Sandbox Code Playgroud)
在哈斯克尔或
typedef MySparseVector = std::list<std::pair(int, double)>>
Run Code Online (Sandbox Code Playgroud)
在C++中?
我试过了
type MySparseVector = List((Int, Double))
Run Code Online (Sandbox Code Playgroud)
但无法弄清楚如何使其发挥作用.如果我在类文件的开头写这个,我得到"预期的类或对象定义"错误.
PS对不起,我输错了.我试图在Scala中使用List [(Int,Double)].
我发现Haskell Data.Vector.*错过了C++ std::vector::push_back的功能.有grow/ unsafeGrow,但它们似乎有O(n)复杂性.
有没有办法在O(1)元素的摊销时间内增长向量?
有没有办法在Haskell中定义信令NaN?我找到了两种处理NaN的方法:
1)使用0/0,产生相当的纳米
2)包Data.Number.Transfinite,它也没有信令NaN.
PS有没有办法在没有编写C库的情况下将Word64逐位放入Double中?
我需要创造
def MergeWith[Id, X, Y, Z](x: HashMap[Id, X], y: HashMap[Id, Y], f: (X, Y) => Z): HashMap[Id, Z]
我想要:
1)迭代x
2)对于以y表示的键,f(x[key], y[key])结果为:HashMap[Id, Z]
对于我发明的一切,我得到编译错误,我不明白如何战斗.
例如,
def andWith[K, X, Y, Z] (x: HashMap[K, X], y: HashMap[K, Y], f: (X, Y) => Z): HashMap[K, Z] = {
for {
(x_name, x_value) <- x
if y.contains(x_name)
} yield x_name -> f(x_value, y.get(x_name))
}
Run Code Online (Sandbox Code Playgroud)
产生
Error:(14, 39) type mismatch;
found : Option[Y]
required: Y
} yield x_name -> f(x_value, y.get(x_name))
^ …Run Code Online (Sandbox Code Playgroud) 表示通过输入更新状态的最佳方法是什么?
我模拟物理系统.它有状态(坐标,速度).状态由模拟更新,该模拟从中获取一些参数(力)stdin.结果stdout在每个模拟循环后进行.
程序应在N个循环后停止.
我已经完成了readIORef,writeIORef但这很难看.