相关疑难解决方法(0)

在scalaz中堆叠StateT

我试图通过移植Dan Piponi本教程中的一些例子来了解Scala中的Monad Transformers:http: //blog.sigfpe.com/2006/05/grok-haskell-monad-transformers.html

我做了几件简单的事:

import Control.Monad.State
import Control.Monad.Identity

test1 = do
    a <- get
    modify (+1)
    b <- get
    return (a,b)

test2 = do
    a <- get
    modify (++"1")
    b <- get
    return (a,b)

go1 = evalState test1 0
go2 = evalState test2 "0" 
Run Code Online (Sandbox Code Playgroud)

变为:

import scalaz._, Scalaz._

val test1 = for {
  a <- get[Int]
  _ <- modify[Int](1+)
  b <- get
} yield (a,b)

val test2 = for {
  a <- get[String]
  _ <- modify[String](_ + …
Run Code Online (Sandbox Code Playgroud)

haskell scala state-monad monad-transformers scalaz

11
推荐指数
1
解决办法
666
查看次数

标签 统计

haskell ×1

monad-transformers ×1

scala ×1

scalaz ×1

state-monad ×1