cost 59 ms
无法在 Dijkstra 的 Haskell 实现中的代码中发现问题 - Not being able spot the problem in the code in Dijkstra’s Haskell implementation

我知道问“为什么我的代码不起作用”不是最好的问题。 但是,我想在 Haskell 中了解更多有关在图论问题的算法上下文中使用 monad 的信息,并以以下代码为起点来了解如何在此类算法中使用 ST monad。 我在一些更简单的算法(快速排序)上取得了进展,并进展到 Dijkstra 的算法。 我无 ...

Monad变换器用于在地图上插入和全部查找? - Monad transformer for inserts and total lookups on a Map?

我有一个计算,我将值插入到Map ,然后再次查找它们。 我知道在插入之前我从未使用过密钥,但无论如何使用(!)会让我感到紧张。 我正在寻找一种方法来获得一个不返回Maybe的总查找功能,以及类型系统阻止我意外滥用的方法。 我的第一个想法是使monad变换器类似于StateT ,其中状态 ...

在ReaderT中修改ST依赖的环境-“ local”功能的问题 - Modify ST dependent environment in ReaderT – problem with `local` function

这个问题是该线程的续集: https : //stackoverflow.com/a/54317095/4400060 我当时在问有关在ReaderT的环境中携带STRef并在其下执行ST动作的问题。 我的设置现在看起来像: 它总体上很酷-我可以自由访问或修改适当的dataspa ...

Data.Vector的unsafeFreeze / unsafeThaw有多“不安全”? - Just how “unsafe” are Data.Vector's unsafeFreeze/unsafeThaw?

Data.Vector.unsafeFreeze的文档说: 不安全[ly]将可变向量转换为不可变向量而不进行复制。 在此操作之后可能不使用可变载体。 我想详细描述这里“不安全”的含义。 在实验上,它似乎“仅”意味着对原始可变向量的进一步修改将导致unsafeFreeze返回 ...

状态编号规范 - Specification of `State#`

但是, STT的文档说: 此monad转换器不应该与包含多个答案的monad一起使用,例如list monad。 原因是状态令牌将在不同的答案之间重复,这会导致发生不良情况(例如,丢失参照透明性)。 安全的monad包括monad State,Reader,Writer,Maybe ...

Haskell ST Monad:(MArray(STArray s)Int(ST s1))没有实例 - Haskell ST Monad: No instance for (MArray (STArray s) Int (ST s1))

我过去一两个月一直在学习Haskell,最近解决了这个编码问题。 另一个挑战是在没有额外空间和线性时间的情况下完成任务,我认为这不可能以纯粹的功能方式完成,所以自然而然地我就了解了ST monad,我认为这将是一个很好的机会了解更多信息。 无论如何,这是我编写的代码: 想法是使用1≤ ...

重构Haskell单代码以避免复制粘贴 - Refactor Haskell monadic code to avoid copy-paste

我已经使用ST monad在Haskell中编写了以下代码,并且可以正常工作。 我唯一的问题是如何避免以下代码中显示的复制粘贴。 当我尝试重构代码时,出现编译器错误,我无法完全理解。 有没有一种方法可以避免以下代码中的复制粘贴。 我想知道,是否可以将处理start_1和start_2(截 ...

有没有证据证明runST确实是纯粹的? - Is there a proof that runST is indeed pure?

最初由Launchbury和Peyton Jones设计的ST monad允许Haskell程序员编写命令式代码(使用可变变量,数组等),同时获得该代码的纯接口。 更具体地说, 入口点函数的多态类型 确保包含ST计算的所有副作用,并且结果值是纯的。 这是否经过严格(甚至正式) ...

ST monad声明的语法 - syntax of ST monad declaration

我最近开始在Hackage上查看核心库,并且有一个我不理解的反复出现的习惯用法。 以下是ST模块的示例: 特别是,我不明白(# new_s, r #) 。 我假设第二个哈希是指一个未装箱的值,但其余的对我来说是一个谜(大概与“新状态”有关)。 ...

递归函数,返回可变数组和列表 - Recursive function that returns multable array and a list

我正在尝试构建一个递归函数,为简单起见,可以说它需要一个列表并构建一个数组和一个列表。 因为在构建数组时需要同时读取和写入数组,所以我使用了可变数组,因此可以进行恒定时间的读写。 因此,签名和功能如下所示: 我想要具有以下签名的函数h : 我希望它具有以下大致实现: ...

在Agda建模ST monad - Modeling the ST monad in Agda

这个最近的SO问题促使我在Haskell中编写了一个不安全且纯粹的ST monad仿真,这是一个稍微修改过的版本,你可以在下面看到: 如果我们能够在没有unsafeCoerce情况下呈现通常的ST monad API,那将是一件unsafeCoerce 。 具体来说,我想说明为什么通常 ...

如何在Scala中实现Fisher-Yates shuffle而没有副作用? - How can I implement a Fisher-Yates shuffle in Scala without side effects?

我想通过使用STArray实现局部突变效应来实现Fisher-Yates算法(就地数组shuffle)而没有副作用,以及一个函数随机数生成器 产生算法所需的随机整数。 我有一个方法def intInRange(max: Int): RNG[Int]我可以用它来产生[0,max)中的 ...

使用并返回多个STUArray - using and returning multiple STUArrays

我一直在研究如何在ST计算中创建和使用多个STUArray。 具体方案是: 创建多个数组,但仅返回其中一个 创建多个数组,但都不返回 创建多个数组并返回多个数组 我有(1)和(2)的答案,但没有(3)的答案。 首先是一些进口,所以我们知道一切都来自哪里: ...

这种签名发生了什么? (Haskell中的Vector.Mutable修饰符) - What's going on in this type signature? (Vector.Mutable modifiers in Haskell)

Haskell中的可变载体有三个元素级变异器: 现在我可以使用这些 - 但是这里发生了什么? 什么是PrimMonad ? PrimState是构造函数吗? 我知道这里有一些绑定在PrimMonad类monad上。 thaw返回m (MVector (PrimSta ...

从STArray提取元素(类似于解压缩) - Extracting elements from STArray (similar to unzipping)

对于在编程竞赛中在Haskell中实现基于粒子的流体模拟,我遇到了一个小问题。 我目前有一个粒子数组,每个模拟步骤都会对其进行修改。 每个粒子都是2个向量的元组:位置和速度(我自己的Vec3D模块)。 在某些时候,我需要从粒子(类似于解压缩列表)中提取位置,我试图这样做: ps'和 ...


 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM