如何在F#中构建几个通用构造函数的树(AST)?

时间:2017-08-22 02:44:39

标签: 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
    | 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

我想要将任何.NET对象编码为数组,但能够用lang解释它。

1 个答案:

答案 0 :(得分:0)

我觉得你有点卡在这里,你需要一种语言类型更高的语言。