我在閱讀Purescript通過示例並介紹了讀者單元的部分。示例如下: createUser :: Reader Permissions (Maybe User)
createUser = do
permissions <- ask
if hasPermission "admin" permissions
then map Just newUser
els
給定一個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
我有一個函數 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)然後
我試圖瞭解下面這個tutorial的延續。 然而,我有困難,瞭解在節2.10以下示例: # let get() =
shift (fun k -> fun state -> k state state) ;;
get : unit => ’a = <fun>
state是int我想類型。我沒有得到的是k的類型。按照我的理解,k捕獲所有計算get()後說到後來,因爲我們正在談論的狀態
我試圖在Scala中實現功能廣度優先搜索來計算給定節點和未加權圖中所有其他節點之間的距離。我用了一個單子國家爲此與簽名: - case class State[S,A](run:S => (A,S))
其他功能,如地圖,flatMap,序列,修改等等等等類似於你一個標準的國家裏單子找到。 下面的代碼: - case class Node(label: Int)
case class Bfs