相关疑难解决方法(0)

什么是索引monad?

什么是索引monad和这个monad的动机?

我已经读过它有助于跟踪副作用.但类型签名和文档并没有把我带到任何地方.

什么是如何帮助跟踪副作用(或任何其他有效的例子)的例子?

monads haskell

94
推荐指数
5
解决办法
1万
查看次数

ST Monad ==代码味道?

我正在努力在Haskell中实现UCT算法,这需要大量的数据杂耍.没有太多细节,它是一个模拟算法,在每个"步骤",基于一些统计属性选择搜索树中的叶节点,在该叶子上构造新的子节点,并且对应于新叶及其所有祖先都会更新.

鉴于所有这些杂耍,我并不是非常敏锐,无法弄清楚如何使整个搜索树成为Okasaki的一个不可改变的数据结构.相反,我一直在玩STmonad,创建由可变STRefs 组成的结构.一个人为的例子(与UCT无关):

import Control.Monad
import Control.Monad.ST
import Data.STRef

data STRefPair s a b = STRefPair { left :: STRef s a, right :: STRef s b }

mkStRefPair :: a -> b -> ST s (STRefPair s a b)
mkStRefPair a b = do
    a' <- newSTRef a
    b' <- newSTRef b
    return $ STRefPair a' b'

derp :: (Num a, Num b) => STRefPair s a b -> ST s …
Run Code Online (Sandbox Code Playgroud)

monads state haskell state-monad

45
推荐指数
3
解决办法
7407
查看次数

如何在函数式编程语言中实现图形和图形算法?

基本上,我知道如何创建图形数据结构,并在允许副作用的编程语言中使用Dijkstra算法.通常,图算法使用一种结构将某些节点标记为"已访问",但这有副作用,我试图避免这种情况.

我可以想到一种在函数式语言中实现它的方法,但它基本上需要将大量的状态传递给不同的函数,我想知道是否有更节省空间的解决方案.

computer-science functional-programming graph

44
推荐指数
1
解决办法
1万
查看次数