首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >什么时候使用Data.Coerce?

什么时候使用Data.Coerce?
EN

Stack Overflow用户
提问于 2021-05-03 04:04:52
回答 1查看 66关注 0票数 2

inline-c包中,有一个example调用来自Haskell的C库GNU Scientific gsl

代码语言:javascript
运行
复制
solveOde fun x0 f0 xend =
  coerce $ solveOdeC (coerce fun) (coerce x0) (coerce f0) (coerce xend)

我试图在Haskell中包装更多的gsl,并且我试图理解示例代码的每一行。那么它为什么在这里使用Data.Coerce呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-03 04:46:03

solveOdeC的类型与solveOde的类型几乎相同。前一种类型在多个点上涉及CDouble,包括在Vectors和Either内部。后者改用Double

代码依赖于具有相同表示的CDoubleDouble。正因为如此,使用coerce可以通过简单地调用另一个函数来定义函数,而不需要运行时开销。否则,将需要创建一个新的Vector,它将按位与第一个相同,只是为了满足类型检查器,为此开销为O(N)。

老实说,我发现库中的定义不必要地冗长。人们可以写下,相反,

代码语言:javascript
运行
复制
solveOde = coerce solveOdeC
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67360657

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档