gpt4 book ai didi

generics - 在 Scala 中,是否有减少泛型类型数量的简写?

转载 作者:行者123 更新时间:2023-12-04 02:03:29 24 4
gpt4 key购买 nike

我想调用 Scalaz 的 pure将值放入 State monad 的方法。以下作品:

type IntState[A] = State[Int, A]
val a = "a".pure[IntState]
a(1)
(Int, java.lang.String) = (1,a)

我还可以消除类型别名(感谢 Scalaz 的 Pure.scala):
val a = "a".pure[({type T[A]=State[Int,A]})#T]
a(1)
(Int, java.lang.String) = (1,a)

但这非常笨拙。有没有更短的方法来合成这样的类型?就像函数文字的占位符语法一样,有没有类似的东西:
"a".pure[State[Int, *]]

最佳答案

对于 Scala 中简洁的部分类型应用程序(arity-2),您可以将类型表示法中缀如下。

type ![F[_, _], X] = TF { type ![Y] = F[X,  Y] }

"a".pure[(State!Int)# !]

请注意,我们可以为两个 arity 类型构造函数(或类型别名)添加符号。

关于generics - 在 Scala 中,是否有减少泛型类型数量的简写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7643493/

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