st-monad

    8熱度

    1回答

    我寫了個小程序在Haskell使用狀態單子帶矢量計算int類型的所有ocurences在樹: import Data.Vector import Control.Monad.State import Control.Monad.Identity data Tree a = Null | Node (Tree a) a (Tree a) deriving Show main :: IO()

    0熱度

    1回答

    如何可以寫出如下功能tt,其目前已鍵入錯誤: t :: Int t = runST $ do ref <- newSTRef 10 readSTRef ref tt :: (STRef s a -> ST s a) -> Int tt f = runST $ do ref <- newSTRef 10 f ref ttTest = tt read

    7熱度

    1回答

    我最近開始在Hackage上查看核心庫,並且有一個我不明白的反覆出現的習語。下面是來自ST module一個例子: instance Monad (ST s) where {-# INLINE (>>=) #-} (>>) = (*>) (ST m) >>= k = ST (\ s -> case (m s) of { (# new_s, r

    2熱度

    1回答

    我一直在研究如何在ST計算中創建和使用多個STUArrays。具體方案是: 創建多個磁盤陣列,但只返回他們中的一個 創建多個磁盤陣列,但回報沒有人 創建多個磁盤陣列,並返回多個陣列 我有答案到(1)和(2),但不是(3)。 首先是一些進口的,所以我們知道一切從何而來: import Control.Monad.ST (ST,runST) import Data.Array.Base (unsaf

    11熱度

    1回答

    的ST單子最近的這次SO question促使我寫在Haskell,略加修改的ST單子,其中你可以看到下面的不安全和純仿真: {-# LANGUAGE DeriveFunctor, GeneralizedNewtypeDeriving, RankNTypes #-} import Control.Monad.Trans.State import GHC.Prim (Any) import

    2熱度

    1回答

    我正在嘗試爲以下情況制定數據結構。 圖結構 我打算與未加權,向邊節點的圖形:Graph = [Node] 每個節點具有: 一些TBD內部(持久性)的狀態 傳入消息隊列 它可以發送的消息類型通過接受 當前節點的狀態(與故障的可能性)的函數的 邊緣 Node { nodeState :: NodeState, inbox :: Queue NodeMessage, nodeMessage :: (No