state-monad

    9熱度

    2回答

    我在閱讀Purescript通過示例並介紹了讀者單元的部分。示例如下: createUser :: Reader Permissions (Maybe User) createUser = do permissions <- ask if hasPermission "admin" permissions then map Just newUser els

    -2熱度

    1回答

    我對單子狀態下獲取和修改的定義感到困惑。 Somewhere說: 得到: 「獲取的狀態的特定的成分,使用供給的投影函數」。 修改:將舊狀態映射到狀態monad內的新狀態。舊國家被拋棄。 這意味着我們可以使用修改直接爲狀態組件分配一個值,如here。 但somewhere別人說,我們可以提供給狀態的功能和使用修改,並得到結果。 這似乎兩個作品,但它不知道哪一個工作在哪裏!

    3熱度

    1回答

    我在學習Haskell。我試圖編寫一個包含「全局狀態」的程序:Vars。每次調用函數時,我都想更改狀態的一個組成部分(例如var1)。該變化可以是對組件的簡單功能(例如+4)。此外,它還打印出已更改的組件。這是我迄今爲止所做的(但我被卡住了)。編輯:運行代碼後,我想查看最新版本的全局狀態。 import Control.Monad.State import Control.Monad.IO.Cl

    1熱度

    1回答

    我有一個模塊Game,它定義了一個像這樣的方法play :: Board -> Move - > Board。 我想用國家單子名爲Playing另一個模塊導入Game模塊,這樣我可以從那裏循環調用play直到Board達到一定的狀態。 我想用State State Monad獲得的Board來調用方法,然後用play返回的Board更新State Monad值。 因此,當循環正在進行時,我想要接收

    1熱度

    2回答

    給定一個mtl monad堆棧,例如, ExceptT String (WriterT String (State s a)),我如何評估內部狀態monad而不需要拆開外層monad? have :: ExceptT String (WriterT String (State s)) a f :: State s a -> a want :: ExceptT String (WriterT

    0熱度

    1回答

    我有一個函數 step :: Int -> State Int Int step n = get >>= \x -> put (x `div` n) >> return (x `mod` n) λ> runState (step 25) 41 (16,1) 如何運行的step個序列,與n不同的值,並使用來自最後一步的狀態下每一步? 所以示例中的步驟將是如下 一步一個產生(16,1)然後

    4熱度

    1回答

    短版:當我在MaybeT (State <type>)()類型的單子使用runMaybeT然後runState,它看起來即使Maybe結果等於Just()像沒有發生狀態變化。爲什麼? 完整版本:我在寫一個程序來解決河內的塔。我所代表的溶液作爲State單子列表是,測序時,操縱初始Towers狀態: data Towers = Towers [Int] [Int] [Int] derivi

    3熱度

    1回答

    練習6.8,Chiusano和Bjarnason,Scala中的函數式編程, 87問一個人如何可能會爲以下特徵實現flatMap(): trait RNG { def nextInt: (Int, RNG) } type Rand[+A] = RNG => (A, RNG) 接聽鍵給出瞭如下解決方案: def flatMap[A,B](f: Rand[A])(g: A => R

    5熱度

    1回答

    我試圖瞭解下面這個tutorial的延續。 然而,我有困難,瞭解在節2.10以下示例: # let get() = shift (fun k -> fun state -> k state state) ;; get : unit => ’a = <fun> state是int我想類型。我沒有得到的是k的類型。按照我的理解,k捕獲所有計算get()後說到後來,因爲我們正在談論的狀態

    1熱度

    1回答

    我試圖在Scala中實現功能廣度優先搜索來計算給定節點和未加權圖中所有其他節點之間的距離。我用了一個單子國家爲此與簽名: - case class State[S,A](run:S => (A,S)) 其他功能,如地圖,flatMap,序列,修改等等等等類似於你一個標準的國家裏單子找到。 下面的代碼: - case class Node(label: Int) case class Bfs