gpt4 book ai didi

scala - 是否有与 Haskell 的 Data.This (A, B, or (A and B)) 等效的 Scala?

转载 作者:行者123 更新时间:2023-12-05 00:24:13 24 4
gpt4 key购买 nike

Haskell 摘要 these包裹:

The 'These' type represents values with two non-exclusive possibilities


data These a b = This a | That b | These a b

Scala 中有类似的东西吗?也许在scalaz?

对于那些不熟悉 Haskell 的人,这里有一个粗略的草图,说明如何在 Scala 中解决这个问题:
sealed trait These[+A, +B] {
def thisOption: Option[A]
def thatOption: Option[B]
}

trait ThisLike[+A] {
def `this`: A
def thisOption = Some(a)
}

trait ThatLike[+B] {
def `that`: B
def thatOption = Some(b)
}

case class This[+A](`this`: A) extends These[A, Nothing] with ThisLike[A] {
def thatOption = None
}

case class That[+B](`that`: B) extends These[Nothing, B] with ThatLike[B] {
def thisOption = None
}

case class Both[+A, +B](`this`: A, `that`: B) extends These[A, B]
with ThisLike[A] with ThatLike[B]

或者你可以做一些类似组合 Either 的事情。 s:
type These[A, B] = Either[Either[A, B], (A, B)]

(显然,表达数据结构并不困难。但如果​​库中现有的东西已经经过深思熟虑,我宁愿使用它。)

最佳答案

关于scala - 是否有与 Haskell 的 Data.This (A, B, or (A and B)) 等效的 Scala?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26684951/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com