小编Ale*_*mov的帖子

Scala中的Typedef

如何在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)].

scala

23
推荐指数
1
解决办法
2万
查看次数

Haskell向量C++ push_back模拟

我发现Haskell Data.Vector.*错过了C++ std::vector::push_back的功能.有grow/ unsafeGrow,但它们似乎有O(n)复杂性.

有没有办法在O(1)元素的摊销时间内增长向量?

haskell vector amortized-analysis data-structures

14
推荐指数
1
解决办法
528
查看次数

Haskell中的IEEE浮点信令NaN(sNaN)

有没有办法在Haskell中定义信令NaN?我找到了两种处理NaN的方法:

1)使用0/0,产生相当的纳米

2)包Data.Number.Transfinite,它也没有信令NaN.

PS有没有办法在没有编写C库的情况下将Word64逐位放入Double中?

floating-point haskell ieee-754

8
推荐指数
1
解决办法
1016
查看次数

在Scala中合并两个HashMaps

我需要创造

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)

scala scala-collections

4
推荐指数
1
解决办法
1269
查看次数

Haskell monad用于模拟

表示通过输入更新状态的最佳方法是什么?

我模拟物理系统.它有状态(坐标,速度).状态由模拟更新,该模拟从中获取一些参数(力)stdin.结果stdout在每个模拟循环后进行.

程序应在N个循环后停止.

我已经完成了readIORef,writeIORef但这很难看.

haskell

3
推荐指数
1
解决办法
259
查看次数