问题标签 [marray]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
haskell - 如何创建未装箱的可变数组实例
假设我有以下类型:
有没有办法创建这样的实例之一:
目前我将所有内容存储为 Word8,并使用(包装)fromEnum/toEnum 进行转换,但感觉不对。我需要严格和拆箱,因为我在内存中使用了一个大型数据结构(>1.2Go),我不能懒惰地加载它。如果我找不到任何解决方案,我将在 C++ 中重新实现所有内容,我希望在我当前的项目中避免这样做。
我已经在#haskell 上提出了这个问题,但没有得到回复,也许现在不是提问的好时机。
haskell - "Could not deduce (MArray (STUArray s) Int (ST s)) from context ()" when applying runST
I'm in the process of learning haskell and came across this problem:
Using Glasgow Haskell Compiler, Version 6.10.4, for Haskell 98, stage 2 booted by GHC version 6.10.1
Common beginning of the file
Using STArray (works)
Using STUArray (doesn't work)
But when I try to switch to unboxed arrays, I get an error message.
Error messages
and also:
After almost two hours of fiddling with the type annotations I hope someone can point me in the right direction. What on earth is going wrong?
Thank you for your time.
c++ - 英特尔 C++ 编译器无法处理深度模板?
我有一个使用marray库的 C++ 项目。目前,它可以在 Windows 7 x64 上使用 MinGW g++ 4.7 和 msvc2010 以及在 Linux Mint x64 上使用 g++ 4.7 进行编译和运行。我决定尝试一下适用于 Linux 的 Intel C++ compiler v. 12.1.4。它能够编译代码,但是当它尝试执行任何干扰表达式模板的行时(如 c = a + b 其中所有三个项都是矩阵),它会因分段错误而崩溃。此问题会影响应用程序的调试和发布版本。
我还尝试为 marray 库编译单元测试和教程代码,英特尔 C++ 编译代码但如果它有任何表达式模板则无法运行它。英特尔 C++ 是否真的与深度模板一样糟糕,还是我遗漏了什么?我是否需要设置任何特殊的编译器标志才能使模板表达式起作用?或者也许只是我正在使用的特定库有问题,而不是一般的表达式模板技术?
我还尝试在 n 上使用各种各样的 -ftemplate-depth- n 标志设置到10 ^ 10的大得可笑的值,并且在没有分段错误的情况下运行我的应用程序和 marray 单元测试/教程仍然没有运气。
更新:这是来自上述库的教程-marray 的 gdb 日志,该库在调试模式下使用 icpc 编译。
看起来问题一般不是源于表达式模板技术,数字数组算术工作正常。当我尝试将一个数组添加到另一个数组时,就会出现问题。
更新。2:实际上整个事情看起来很像这里提到的问题。解决方案应该是重写 operator E&() { return static_cast(*this); } 变成类似 E& get_ref() { return static_cast(*this); 和 const 引用相同。当然,在代码中改变这些东西的用法。我会尽快尝试并报告结果。
haskell - MArray 特化为 STArray
我对在 Haskell 中使用多态性的 STArray 感到困惑。
假设我有以下设置
现在,我相信 thawData 的类型专门用于这种情况
但是,除非我将 thawData 的类型更改为显式使用 STArray,否则即使我尝试在 do 表达式的主体中显式键入它,这也不会编译。
那么到底发生了什么?为什么类型不能专门化?
我可以以某种方式更改 doSomething 的主体而不是 thawData 的类型吗?
谢谢!
arrays - 如何正确优化 MArray 函数以提高速度?
我正在为MArrays开发一个排序库。速度很重要,所以我想尽可能地优化它。
目前,我只是内联排序功能。与未优化的代码相比,这将代码加速了 10 倍以上。但是,如果在多个地方使用这些函数,这很容易导致代码大小爆炸,并减慢编译速度。
唯一的另一种选择似乎是专门针对所有现有的 MArray 实例的函数。这也扩大了生成的代码,但只是增加了一个常数因子,这与函数的使用次数无关。问题是,是否有可能出现 MArray 的新实例?还是 MArray 如此特殊并且绑定到 Haskell 的内部结构,以便我可以确定其他模块不能定义新实例?
haskell - 重新审视具有约束类型的多态 STUArray
我想实现一个分数类型的动态规划算法多态;这是一个没有边界条件的简化一维版本:
约束不起作用;
总结一下,Could not deduce (MArray (STUArray s) e (ST s)) from the context forall s. MArray (STUArray s) e (ST s i)
。请注意,将约束添加到resultArrayST
只是将问题推到runSTUArray
.
我目前知道四个有缺陷的解决方案:
- 避免 boxed
STArray
s 或简单的 non-monadicArray
s 的问题,也许使用seq
和 bang 模式来缓解由此产生的内存问题。 unsafeFreeze
用and打破类型系统,unsafePerformIO
该死的约束MArray IOUArray e IO
工作正常。- 此解决方案使用类型类并为每个“不可装箱”类型编写实例来解决类似问题。
- 这个使用 GHC 重写规则为每种类型(和通用
STArray
版本)选择不同的功能。
但是,我问这个问题是希望像现代语言扩展这样ConstraintKinds
可以让我表达我的原始代码的意图forall s. MArray (STUArray s) e (ST s)
。
api - Docusign API 与我的会话签名过程应用程序
我想将 docusign 与我的应用程序及其工作集成,如下面的链接所示。我将如何做到这一点,用户指示签署我的应用程序生成的文档并返回到我的应用程序。