当前位置: 首页 > 知识库问答 >
问题:

向量空间库与标量型约束

晋言
2023-03-14
import Data.VectorSpace
-- scale a vector with a float
step :: (VectorSpace a) => a -> Float -> a
step x dt = x ^* dt
Could not deduce (Scalar a ~ Float)
from the context (VectorSpace a)
  bound by the type signature for
        step :: VectorSpace a => a -> Float -> a
  at Test.hs:5:9-42 
In the expression: x ^* dt
In an equation for `step': step x dt = x ^* dt
step (1,1) 0.5
step 1 0.5

从本质上说,我希望重用向量空间定义的一些实例

共有1个答案

隆礼骞
2023-03-14
{-# LANGUAGE GADTs #-}
import Data.VectorSpace

step :: (VectorSpace a, Scalar a ~ Float) => a -> Float -> a
step x dt = x ^* dt
 类似资料:
  • 我创建了一个示例容器,它在内部存储在std::vector中。我希望能够用std::vector初始化容器。因此,我创建了一个构造函数,它采用std::initializer_list,还采用begin和end。 但我似乎不能这样初始化: 这里的问题是什么?我该怎么修复? 代码在这里:

  • 你可以访问用户空间目标变量,所用的语法与第3.3节第二部分,“目标变量”中访问内核空间的语法相同。在Linux中,用户代码和内核代码使用的地址空间是隔绝的。不过SystemTap可以在使用->运算符时找到恰当的地址空间。 对于指向基本类型(如整数和字符串)的指针,可以使用下列的函数访问用户空间的数据。每个函数的第一个参数都是指向数据的指针(address)。 user_char(address)

  • 问题内容: 向量是同步的,ArrayList是不同步的,但是我们可以通过来同步ArrayList ,那么哪个会更好,更快地执行? 问题答案: 同步收集既浪费时间又危险。一个很简单的例子,为什么它们不好,是考虑两个线程在同一集合上同时运行一个循环: 我们的列表可能是同步的(例如,Vector),并且此代码仍然可怕地中断。为什么?因为对size(),get(),remove()的单个调用是同步的,但是

  • 问题内容: 因此,我了解到在编程中使用平方根总是不好的做法,尤其是在每个更新步骤中。我正在尝试在圆之间进行逼真的弹性碰撞,并且我一直在阅读以下内容:http : //www.vobarian.com/collisions/2dcollisions2.pdf是否可以在不使用平方根的情况下标准化向量?还是做我正在做的任何快速方法? 问题答案: 乘以 大小平方的快速逆平方根进行归一化。 归一化向量意味着

  • 假设没有特殊方法(就像)来重新配置s,那么IDRIS中是否存在随机访问数据类型? 如何在代数类型系统中定义这样的东西?当然,似乎不可能归纳地定义它。 在像Idris这样的类型系统中,是否有可能创建一个支持O(1)随机访问的数据类型,并知道它的长度,以便所有访问都是可证明的有效的?(Haskell有数组样式的向量,但它们的具体实现对包括我在内的普通用户来说是不透明的)

  • 我想知道v1.swap(v2)使用std::交换(v1, v2)有什么好处。 从性能角度来看,我已经实现了一个简单的测试代码(我不确定它是否相关): 根据输出,向量::swap似乎在没有优化的情况下更快-O0。输出为(微秒): 与-O3没有显著差异。