小编Paw*_*elN的帖子

避免使用 Circe json 序列化器序列化为 null

如何避免使用 Circe json 序列化器将 None 序列化为 null?我无法强制该库跳过“无”的序列化字段。有可能实现吗?

json scala circe

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

为什么Scala只为Function1实现andThen函数

为什么Scala有方法的实现,然后只为Function1(只接受一个参数).我没有看到任何其他函数没有这种方法的原因.

下面我们有合法的代码编译:

val firstFunction: String => String = ???
val secondFunction: String => String = ???
firstFunction.andThen(secondFunction)
Run Code Online (Sandbox Code Playgroud)

但这不会编译:

val firstFunction: (String,String) => String = ???
val secondFunction: String => String = ???
firstFunction.andThen(secondFunction)
Run Code Online (Sandbox Code Playgroud)

functional-programming scala

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

Scala字符串插值和评估表达式

我正在深入研究 Scala 的字符串插值功能,我想知道使用它是否安全。字符串插值允许我们评估表达式,如:

println(s"Hello World! ${for (i <- 1 to 100) println(s"other values $i")}")
Run Code Online (Sandbox Code Playgroud)

我的疑问是我们是否应该评估内插字符串中的表达式。我看到很多其他开发人员正在使用此功能的 Scala 代码,例如示例中,但不知道这是否正确和安全。

scala string-interpolation

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

何时使用折叠以及何时在Scala中使用foreach列表

在我的理解中,当需要对列表中的每个元素应用函数时,我们使用fold函数,对吗?

如果只是迭代列表,foreach就足够了?

functional-programming scala

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

Scala验证 - 右偏差

最后,Scala 2.12具有右偏置.我听说它可以用于验证目的,但我无法想象这一点.我无法找到好的榜样.
有人可以解释一下这个monad如何帮我验证吗?此增强的Either还可以涵盖其他用例吗?

functional-programming scala either

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

Haskell Servant 和 MTL 应用程序风格

在我观看了 George Wilson 的精彩演讲(Next Level MTL https://github.com/gwils/next-level-mtl-with-classy-optics/blob/master/Slides.pdf)之后,我尝试创建使用 MTL 的应用程序风格设计并决定使用servant,看起来这个库不太适合这样的设计。
\n下面的代码无法编译,因为我无法将m转换为 Handler。

\n\n
getItems :: (MonadIO m, MonadReader r m, HasNetworkConfig r) => m [Item]\ngetItems =\n   return [Item "foo" "bar"]\n\nmkApp :: Application\nmkApp = serve itemApi getItems\n
Run Code Online (Sandbox Code Playgroud)\n\n

您可以在这里找到完整的示例:https ://github.com/paweln1986/ServantMTLStackOverflowExample

\n\n

是否可以将任何 monad 与servant一起使用?如何实现这一目标?我尝试使用 hoistServer 但没有成功。你知道我想念这里什么吗?

\n\n

编译错误:

\n\n
   \xe2\x80\xa2 No instance for (MonadReader r0 Handler)\n    arising from a use of \xe2\x80\x98getItems\xe2\x80\x99\n   \xe2\x80\xa2 In the second argument of \xe2\x80\x98serve\xe2\x80\x99, namely \xe2\x80\x98getItems\xe2\x80\x99\n     In the expression: serve itemApi getItems\n …
Run Code Online (Sandbox Code Playgroud)

haskell servant

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