相关疑难解决方法(0)

左偏和右偏?

我读了一篇关于部分统一的文章,作者提到了左偏和右偏的数据类型.
有人可以向我解释一下,什么是左偏和右偏的数据类型?
它与Function1有什么关系?
Either左侧偏置或右侧偏置?

scala

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

创建一个通常返回一个或两个参数的方法

我有办法

def foo(num: Int): String
Run Code Online (Sandbox Code Playgroud)

我在代码中的某些地方调用了某些地方,一切都很好。
最近,我遇到一种情况,我需要调用相同的方法,但是需要使用一些参数int值,我需要返回2个String,而不仅仅是一个。我当前的实现方式是:

def foo(num: Int): List[String]
Run Code Online (Sandbox Code Playgroud)

每次调用foo并获取1个 String时,我都会得到列表的开头,每次调用并返回2个字符串时,我都将获得[0,1]中的元素(我知道当我调用时foo(10),我得到2个字符串,其余的-只有一个)。

是否有更惯用的scala /功能?

functional-programming scala

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

Scala的要么没有'flatMap`和Either.left/.right的含义

看看Haskell的EitherMonad,有一个>>=功能.

Prelude Map> let add100 = \x -> Right (x+100 :: Int)

Prelude Map> x
Right 5
Prelude Map> x >>= add100
Right 105

Prelude Map> let y = Left "..." :: Either String Int
Prelude Map> y >>= add100
Left "..."
Run Code Online (Sandbox Code Playgroud)

但是,为什么Scala Either[A,B]没有flatMap,即相当于>>=函数?

scala> e
res5: Either[String,Int] = Right(1)

scala> e.
asInstanceOf   fold           isInstanceOf   isLeft         isRight
joinLeft       joinRight      left           right          swap
toString
Run Code Online (Sandbox Code Playgroud)

此外,有什么意义leftright

scala> e.left
res6: …
Run Code Online (Sandbox Code Playgroud)

haskell scala

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

标签 统计

scala ×3

functional-programming ×1

haskell ×1