Scala中缀类型的真实例子

Fin*_*son 4 scala

我发现了一个有趣的语法东西.它被称为Infix type.

例:

class M[T, U]
new (Int M String)
Run Code Online (Sandbox Code Playgroud)

现在我正在从一些流行的框架或库中寻找这种类型的例子.我在哪里可以找到它们?有什么建议?

Odo*_*ois 11

无形的图书馆

有一堆他们

多态函数

Set ~> Option
Run Code Online (Sandbox Code Playgroud)

很像

Set[A] => Option[A] forAny {type A}
Run Code Online (Sandbox Code Playgroud)

HLists

Int :: String :: Double :: HNil 
Run Code Online (Sandbox Code Playgroud)

就像一个超灵活的版本

(Int, (String, (Double, ())))
Run Code Online (Sandbox Code Playgroud)

余积

Int :+: String :+: Double :+: CNil
Run Code Online (Sandbox Code Playgroud)

就像超灵活的版本

Either[Int, Either[String, Either[Double, Nothing]]]
Run Code Online (Sandbox Code Playgroud)

键入标签

Int @@ NonNegative
Run Code Online (Sandbox Code Playgroud)

零成本运行时模拟Int与标记类型中记住的一些信息

斯卡拉兹图书馆

正如Archeg所提到的更多

String \/ Long
Run Code Online (Sandbox Code Playgroud)

是scala的更酷版本Either[String,Long],请在此处阅读更多内容

这些

Boolean \&/ Long
Run Code Online (Sandbox Code Playgroud)

方便实施

Either[(Boolean, Long), Either[Boolean, Long]]
Run Code Online (Sandbox Code Playgroud)

地图

String ==>> Double
Run Code Online (Sandbox Code Playgroud)

是haskellest版本的

collection.immutable.TreeMap[String, Double]
Run Code Online (Sandbox Code Playgroud)

Monoid Coproduct

String :+: Float
Run Code Online (Sandbox Code Playgroud)

是交替的事物列表,其中类似的事物被聚合(添加,连接,选择最大等)而不是排序


Joh*_*shy 5

从scala语言,广义类型约束

=:=  =>  A=:=String => A must be String
<:<  =>  A<:<String => A must be subtype of String
Run Code Online (Sandbox Code Playgroud)