如何在java中实现haskell数据类型?
如果您有这些Haskell数据类型如何在java中实现haskell数据类型?,java,haskell,functional-programming,frege,Java,Haskell,Functional Programming,Frege,如果您有这些Haskell数据类型 data Mlist a = Mlist [a] data Mordering = MLT | MEQ | MGT | MIN deriving (Eq, Show) 用java编写此代码的最佳方法是什么?如果您想在java中获得仅求和的类型,那么很容易。只需使用枚举: public enum Mordering { MLT, MEQ, MGT, MIN } 您甚至可以免费获得equality、toString()和其他有用的东西。如果您只需要产
data Mlist a = Mlist [a]
data Mordering = MLT | MEQ | MGT | MIN deriving (Eq, Show)
用java编写此代码的最佳方法是什么?如果您想在java中获得仅求和的类型,那么很容易。只需使用枚举:
public enum Mordering {
MLT, MEQ, MGT, MIN
}
您甚至可以免费获得equality、toString()
和其他有用的东西。如果您只需要产品类型,如您的Mlist
,那么简单类就是一种选择:
public class Mlist<T> {
public final List<T> list;
public Mlist(List<T> list) {
this.list = list;
}
}
不确定是否有最好的方法 但是为了得到一个想法,我们可以做以下工作:通过运行这个代码并查看它生成的java代码
(Frege是一种JVM语言,它试图弥补缺少的Haskell JVM后端。Frege本质上是Haskell 2010加上更高级别的多态类型和Java互操作。)Java现有的列表数据类型有什么问题?至于后者,我不太懂Java,但它一定有某种枚举……也许你可以看看
abstract sealed class Optional[+T]
case class Present[+T](value: T) extends Optional[T]
case class Absent() extends Optional[Nothing]