[英]Haskell to F# - declare a recursive types in f#
我试图通过移植一些Haskell代码来教我自己的F#。
特别是我试图移植这里显示的倒计时问题
我试图在F#中创建以下Haskell类型:
data Op = Add | Sub | Mul | Div
data Expr = Val Int | App Op Expr Expr
在F#中我认为Op类型定义如下:
type Op = | Add | Sub | Mul | Div
我遇到了Expr类型的问题。
如何创建递归类型? 从这个SO问题看起来,人们无法在F#中创建Expr类型。
还有什么是'App'类型的F#等价物,它将Op类型应用于Expr类型。
如果无法直接移植此代码,有人可能会建议替代数据结构。
定义像这样的递归类型不是问题; 你不能做的是创建更高级的类型,它们在类型构造函数上进行参数化(这个例子不需要它)。 对于任何联合类型定义,您需要使用关键字“of”将构造函数名称与构造函数参数分开,并且参数本身应采用元组类型的形式(即它们应以星号分隔):
type Op = Add | Sub | Mul | Div
type Expr = Val of int | App of Op * Expr * Expr
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.