标签: scalaz

akka-camel vs scalaz-camel

有没有人对akka-camel vs scalaz-camel-akka做过评价?我喜欢scalaz带来的功能方法,并且稍微使用了scalaz-camel-akka,但还没有真正使用过akka-camel.

我会对某些比较点非常感兴趣.

scala apache-camel scalaz akka

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

使用 Postgres 枚举进行 JDBC 插入

给定以下PersonSQL 和模型代码:

SQL

CREATE TYPE sex AS ENUM ('male', 'female');

CREATE TABLE person (
    id bigserial primary key,
    name varchar(100) NOT NULL,
    age integer NOT NULL,
    gender sex NOT NULL );
Run Code Online (Sandbox Code Playgroud)

代码

object Person {

    sealed trait Gender 
    case object Male extends Gender 
    case object Female extends Gender 

    // credit to Travis Brown: http://stackoverflow.com/a/30946172/409976
    implicit val GenderShows: Show[Gender] = Show.shows {
      case Male   => "male"
      case Female => "female"
    }

}

case class Person private(id: Option[Long], name: String, …
Run Code Online (Sandbox Code Playgroud)

sql scala scalaz

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

是否有组成Kleisli内同胚的有趣例子?

这是我上一个问题的后续行动

我们可以定义一个函数,该函数按路径查找XML节点,(List[String], XmlNode) => Option[XmlNode]作为(String, XmlNode) => Option[XmlNode]按名称获取子节点的函数组合.

我们使用函数A => M[A],其中M是monad,形成a monoid,因此我们可以轻松地组合它们.

现在我想知道是否还有其他有趣的组成这些函数的例子.

scala scalaz kleisli

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

将 Scalaz 与 Spark 一起使用时出现不可序列化的异常

我做了一个简单的例子来尝试将scalaz 库代码与 Apache Spark 1.5集成。

这是一个简单的 Spark 程序来说明我的问题:

package test

import org.apache.spark.{ SparkConf, SparkContext }
import org.apache.spark.rdd.RDD

import ca.crim.deti.re.spark.sparkConf
import scalaz._
import scalaz.Scalaz._

object TestSpark {

  def main(args: Array[String]) = {
    val conf = new SparkConf().setAppName("Test").setMaster("local")
    val SC = new SparkContext(conf)
    val c = SC.parallelize(List(1, 2, 3, 4, 5))

    println(func1(c).count) // WORKS
    println(func2(c).count) // DOES NOT WORK.. NotSerializableException
  }

  // WORKS!
  def func1(rdd: RDD[Int]) = {
    rdd.filter { i => f(i, i) }
  }
  // DOES NOT WORK! …
Run Code Online (Sandbox Code Playgroud)

scala scalaz apache-spark

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

Scala SBT如何同时运行测试和它测试

对于我的项目,我进行了测试,并在我的 sbt 构建中进行了测试。为了运行测试,我输入 sbt test,然后输入 it:test。build.sbt 中是否有一种方法可以将 test 和 it:test 结合起来,以便我的所有测试都在一个命令中执行?

scala sbt scalaz scalatest scala-collections

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

在此 Scala 示例中,泛型类型约束“:<:”和“:+:”意味着什么?

从 2017 年有关 nanopass 编译器的演讲 ( https://github.com/sellout/recursion-scheme-talk/blob/master/nanopass-compiler-talk.org ) 中,我找到了下面的代码片段。在这段代码片段中,我看到两个通用约束,我已经上下搜索以理解它们,但无法找到有关它们的任何信息。我希望了解的是:

\n
    \n
  • 这些运营商在做什么?
  • \n
  • 哪儿来的呢?
  • \n
  • 最新版本的 Scala 和相关库中是否有更现代的等效项?
  • \n
\n
final case class Let[A](bindings: List[(String, A)], body: A)\nfinal case class If[A](test: A, consequent: A, alt: A)\n\ndef expandLet[Lambda :<: F]: Fix[Let :+: F] => Fix[F] =\n  _.unFix match {\n    case Let(bindings, body) =>\n      bindings.unzip((names, exprs) =>\n        Fix(App(Fix(Lam(names, expandLet(body)).inject),\n                exprs.map(expandLet)).inject))\n    // and don\xe2\x80\x99t forget the other cases\n  }\n\ndef expandIf[Lambda :<: F]: Fix[If :+: F] => Fix[F] =\n  _.unFix match {\n    case If(test, …
Run Code Online (Sandbox Code Playgroud)

scala higher-kinded-types scalaz scala-cats recursion-schemes

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

scalaz中的全局,默认隐含(scalaz7)

当我使用Scalaz进行编码时,我经常遇到问题,范围内没有隐含的内容.我认为在大量的软件包scalaz中应该存在一些默认的含义,但要么我不知道哪里有没有.

假设我们想要show任何Anyscalaz(我使用scalaz 7):

scala>     import scalaz._
import scalaz._

scala>     import Scalaz._
import Scalaz._

scala>     {def a: Any = "sratatata"; a}.show
<console>:14: error: could not find implicit value for parameter F0: scalaz.Show[Any]
{def a: Any = "sratatata"; a}.show
^
Run Code Online (Sandbox Code Playgroud)

这是行不通的Show[Any],因为范围没有隐含.

为什么Scalaz不提供它?使用某些全球性的好方法是Show[A]什么?我的意思是这样的:

scala> implicit def anyShow[A] = Show.showFromToString[A]
anyShow: [A]=> scalaz.Show[A]

scala> {def a: Any = "sratatata"; a}.show
res0: scalaz.Cord = sratatata
Run Code Online (Sandbox Code Playgroud)

我觉得同样的感觉Equal.

编辑

我已经尝试在添加的答案中提到,import scalaz.syntax.ShowSyntax但这并不能解决我的问题.看到:

scala>     import scalaz._
import …
Run Code Online (Sandbox Code Playgroud)

scala scalaz scalaz7

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

Scalaz:如何在常规scala列表中使用`traverseS`?

如果我有一个简单的scala List[A](即scala.collection.immutable.List),我有一些状态monad State[S,B].我想使用Scalaz的专业traverseSala:

val stuff: scala.collection.immutable.List[Int] = List(1,2,3)
val state: State[S,A]
stuff.traverseS(i => modify { ... })
Run Code Online (Sandbox Code Playgroud)

我需要导入什么才能转换scala.collection.immutable.List为Scalaz List?我找不到通过GitHub搜索,我无法让它尝试导入全权委托.也许我错过了一些明显的东西.

谢谢你的帮助.

scala scalaz

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

"或" - Scala中的两个选项?

我想做这样的事情:

def or[A](x: Option[A], y: Option[A]) = x match {
 case None => y   
 case _ => x 
}
Run Code Online (Sandbox Code Playgroud)

这样做的惯用方法是什么?我能想到的最好的是Seq(x, y).flatten.headOption

functional-programming scala scalaz scala-option

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

scalaz可折叠的作曲

我有下一个代码

val listOption: List[Option[Int]] = List(1.some, none, 2.some)
Run Code Online (Sandbox Code Playgroud)

我想折叠元素,我写下一个代码

val result = listx.fold(0.some)((acc, el) => {
  (acc, el) match {
    case (Some(a), Some(b)) => Some(a + b)
    case (Some(a), _) => Some(a)
    case (_, Some(b)) => Some(b)
    case _ => el
  }
})
println(result.getOrElse(0)) // => 3 
Run Code Online (Sandbox Code Playgroud)

这工作得很好,但我在scalaz来源中看到下一个三重奏

val composeFold = Foldable[List] compose Foldable[Option]
composeFold.fold(listOption) // => 3
Run Code Online (Sandbox Code Playgroud)

但我不明白它是如何正确的工作,以及为什么scalaz不将这些方法混合到listOption实例中,以及scala fold和scalaz 之间的区别fold

scala scalaz scalaz7

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