Generics 如何在F#中构建几个通用构造函数的树(AST)?
我正在构建一个小数组语言,并努力了解如何使用泛型对数组进行编码:Generics 如何在F#中构建几个通用构造函数的树(AST)?,generics,f#,interpreter,algebraic-data-types,Generics,F#,Interpreter,Algebraic Data Types,我正在构建一个小数组语言,并努力了解如何使用泛型对数组进行编码: type Shape<'T> = | Col of array<'T> | Rel of array<Shape<'T>> let makeArray (value:array<'T>) = Col value type ExprC = | BoolC of bool array | StrC of string array
type Shape<'T> =
| Col of array<'T>
| Rel of array<Shape<'T>>
let makeArray (value:array<'T>) = Col value
type ExprC =
| BoolC of bool array
| StrC of string array
| IntC of int array
# Here is ExprC -> Shape<bool>
let eval (ast : ExprC) =
match ast with
| BoolC(v) -> makeArray v
| StrC(v) -> makeArray v
| IntC(v) -> makeArray v
类型形状
|数组的Rel)=列值
类型ExprC=
|bool阵列的BoolC
|字符串数组的StrC
|int数组的IntC
#这里是ExprC->Shape
let eval(ast:ExprC)=
匹配
|BoolC(v)->makeArray v
|StrC(v)->makeArray v
|IntC(v)->makeArray v
我想找到一种方法,将任何.NET对象编码为数组,但又能用lang解释它。我想你有点被困在这里,你需要一种类型更高的语言。我想你有点被困在这里,你需要一种类型更高的语言。我不太清楚这个问题。你能提供更多的信息,或者是一个你打算如何使用这段代码的示例吗。我想避免对所有值进行装箱/取消装箱,因此,我想知道是否存在一种使
eval
变成ExprC->Shape的方法。我对这个问题不太清楚。你能提供更多的信息,或者举个例子说明你打算如何使用这个代码。我想避免将所有的值装箱/取消装箱,所以我想知道是否存在一种使eval
变成ExprC->Shape的方法