小编dre*_*xin的帖子

Scalaz相当于forM_

我只是ST在scalaz中玩了一下并且到了关键点,在那里我想使用可遍历类型的内容来修改我的内容STRef.在Haskell中我可以这样做(取自Haskell wiki):

sumST :: Num a => [a] -> a
sumST xs = runST $ do

   n <- newSTRef 0

    forM_ xs $ \x -> do
        modifySTRef n (+x)

   readSTRef n
Run Code Online (Sandbox Code Playgroud)

不幸的是,我无法找到forM_scalaz中的等价物.所以问题是,我怎么能用scalaz做到这一点?

functional-programming scala scalaz

7
推荐指数
1
解决办法
278
查看次数

Scala宏指定解构函数的参数

我目前正在玩一些宏,但也许这是一个坏主意,但这是我的问题:

我有以下宏:

def using[A <: { def close(): Unit }, B](resource: A)(f: A => B) = macro usingImpl[A, B]

def usingImpl[A <: { def close(): Unit }, B](c: Context)(resource: c.Expr[A])(f: c.Expr[A => B]): c.Expr[B] = {

  import c.universe._


  f.tree match {
    case Function(params, body) =>
      //val ValDef(modifiers, name, tpt, _) = params.head
      c.Expr[B](
        Block(
          List(
            //ValDef(modifiers, name, tpt, resource.tree)
            ValDef(params.head.symbol, resource.tree)
          ),
          body
        )
      )

    case _: Select =>
      reify {
        val res = resource.splice
        try {
          f.splice(res)
        } finally …
Run Code Online (Sandbox Code Playgroud)

scala scala-macros

6
推荐指数
1
解决办法
414
查看次数

关于斯卡拉的问题

我正在学习scala.我正在读Scala的不耐烦.

1.)

逆天

有区别吗?

for (i <- 0 to 10)if (i % 2 == 0) println(i)

for (i <- 0 to 10 if i % 2 == 0) println(i)
Run Code Online (Sandbox Code Playgroud)

2.)

我总是看到以下符号,=>但他们从不解释它的作用.

有时我认为这是一个演员,但它是完全不同的东西,我希望你能搞清楚.

scala

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