我发现了一种有趣的语法结构,它被称为中缀类型。
例如:
class M[T, U]
new (Int M String)
现在我正在寻找来自一些流行框架或库的此类型示例。我该去哪里找它们?有什么建议吗?
我发现了一种有趣的语法结构,它被称为中缀类型。
例如:
class M[T, U]
new (Int M String)
现在我正在寻找来自一些流行框架或库的此类型示例。我该去哪里找它们?有什么建议吗?
有很多函数
Set ~> Option
与其相似,
Set[A] => Option[A] forAny {type A}
Int :: String :: Double :: HNil
就像是一个超级灵活的版本
(Int, (String, (Double, ())))
Int :+: String :+: Double :+: CNil
就像是超级灵活的版本一样
Either[Int, Either[String, Either[Double, Nothing]]]
Int @@ NonNegative
提供了零成本的运行时,它是Int
的类似体,并在标签类型中记忆一些信息。
正如Archeg所提到的,它甚至有更多的东西。
String \/ Long
这是Scala中更酷炫版本的Either[String,Long]
,在这里了解更多信息。
Boolean \&/ Long
这是一个方便的实现方式。
Either[(Boolean, Long), Either[Boolean, Long]]
String ==>> Double
这是 haskell 版本的
collection.immutable.TreeMap[String, Double]
String :+: Float
这是一种交替的事物列表,其中相似的事物被聚合(添加、连接、选择最大值等),而不是按顺序排列。
从Scala语言中,泛型类型约束
=:= => A=:=String => A must be String
<:< => A<:<String => A must be subtype of String
::
的类。可以像这样匹配列表使用它:def m(l : List[Int]) = l match {
case a :: b => println("Matched") // The same as case ::(a, b) => ...
case _ => println("Not matched")
}
在像scalaz这样的库中还有很多其他的例子,但这个例子是最具代表性的。
更新
刚才理解错了,你想要的是类型。我正在将=:=
和<:<
添加到答案中,但@johny比我更快。请查看他的答案。