问题标签 [stuarray]

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.

0 投票
2 回答
1654 浏览

haskell - 如何创建未装箱的可变数组实例

假设我有以下类型:

p>

有没有办法创建这样的实例之一:

p>

目前我将所有内容存储为 Word8,并使用(包装)fromEnum/toEnum 进行转换,但感觉不对。我需要严格和拆箱,因为我在内存中使用了一个大型数据结构(>1.2Go),我不能懒惰地加载它。如果我找不到任何解决方案,我将在 C++ 中重新实现所有内容,我希望在我当前的项目中避免这样做。

我已经在#haskell 上提出了这个问题,但没有得到回复,也许现在不是提问的好时机。

0 投票
1 回答
793 浏览

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.

0 投票
2 回答
952 浏览

haskell - 具有多态类型的 STUArray

我想使用STmonad 和STUArrays 实现一个算法,并且我希望它能够同时处理FloatDouble数据。

我将演示一个更简单的示例问题:计算一个 memoized scanl (+) 0(我知道它可以在没有 的情况下解决STUArray,仅用作示例)。

这失败了:

我无法应用建议的“可能修复”。因为我需要(forall s. MArray (STUArray s) a (ST s))在上下文中添加类似的东西,但是这是不可能的..

0 投票
1 回答
194 浏览

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.

我目前知道四个有缺陷的解决方案:

  1. 避免 boxed STArrays 或简单的 non-monadic Arrays 的问题,也许使用seq和 bang 模式来缓解由此产生的内存问题。
  2. unsafeFreeze用and打破类型系统,unsafePerformIO该死的约束MArray IOUArray e IO工作正常。
  3. 解决方案使用类型类并为每个“不可装箱”类型编写实例来解决类似问题。
  4. 这个使用 GHC 重写规则为每种类型(和通用STArray版本)选择不同的功能。

但是,我问这个问题是希望像现代语言扩展这样ConstraintKinds可以让我表达我的原始代码的意图forall s. MArray (STUArray s) e (ST s)