Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的OptionT?可能吗?_Java_Scala_Monads - Fatal编程技术网

Java中的OptionT?可能吗?

Java中的OptionT?可能吗?,java,scala,monads,Java,Scala,Monads,ScalaZ提供的monad transformers给我留下了深刻的印象,现在我很感兴趣是否可以在Java中实现类似OptionT的东西 在Scala中,我们可以使用TypeClass来简化实现。Java中有类似的东西吗?没有。OptionT是一种更高级的类型构造函数,这意味着它采用类型构造函数而不是类型作为参数。Java不支持更高级的类型构造函数,在Java中,类型构造函数(也称为泛型类/接口)只能将类型作为参数和返回类型 类型构造函数与函数非常相似,只是在类型级别上不同。在数学的某些分支中

ScalaZ提供的monad transformers给我留下了深刻的印象,现在我很感兴趣是否可以在Java中实现类似OptionT的东西

在Scala中,我们可以使用TypeClass来简化实现。Java中有类似的东西吗?

没有。OptionT是一种更高级的类型构造函数,这意味着它采用类型构造函数而不是类型作为参数。Java不支持更高级的类型构造函数,在Java中,类型构造函数(也称为泛型类/接口)只能将类型作为参数和返回类型

类型构造函数与函数非常相似,只是在类型级别上不同。在数学的某些分支中也被称为值构造函数的函数将值作为参数并返回值。如果它将函数作为参数和/或返回函数,则称为高阶函数。并不是所有东西都允许高阶函数,例如C不支持它们

类似地,类型构造函数将类型作为参数并返回它从类型构造类型的类型,例如,当您将Int作为参数传递时,列表类型构造函数将构造一个整数类型列表。与函数类似,当类型构造函数可以将类型构造函数作为参数或返回类型构造函数时,它被称为更高级的类型,并且它们在任何地方都不受支持。特别是,Java不允许它们

注意:您实际上可以在Java中说类似于Foo的东西,但这不是更高级的类型构造函数。这里的两个Foo实际上是不同的东西:第一个Foo是泛型类型Foo,第二个Foo是原始类型Foo,它是泛型在Java5中引入方式的产物。

否。OptionT是一种更高级的类型构造函数,意味着它采用类型构造函数而不是类型作为参数。Java不支持更高级的类型构造函数,在Java中,类型构造函数(也称为泛型类/接口)只能将类型作为参数和返回类型

类型构造函数与函数非常相似,只是在类型级别上不同。在数学的某些分支中也被称为值构造函数的函数将值作为参数并返回值。如果它将函数作为参数和/或返回函数,则称为高阶函数。并不是所有东西都允许高阶函数,例如C不支持它们

类似地,类型构造函数将类型作为参数并返回它从类型构造类型的类型,例如,当您将Int作为参数传递时,列表类型构造函数将构造一个整数类型列表。与函数类似,当类型构造函数可以将类型构造函数作为参数或返回类型构造函数时,它被称为更高级的类型,并且它们在任何地方都不受支持。特别是,Java不允许它们


注意:您实际上可以在Java中说类似于Foo的东西,但这不是更高级的类型构造函数。这里的两个Foo实际上是不同的东西:第一个Foo是泛型Foo,第二个Foo是原始类型Foo,这是泛型在Java 5中引入的方式的产物。

是的,这是可能的,但有很多技巧:


上述库使用普通泛型模拟高阶多态性。因此,您必须手动将高阶表示的结果转换回其正常形式

是的,这是可能的,但有很多诡计:


上述库使用普通泛型模拟高阶多态性。因此,您必须手动将高阶表示的结果转换回其正常形式

你可能对独眼巨人感兴趣:你可能对独眼巨人感兴趣: