【问题标题】:How build a Tree (AST) of several generic constructors in F#?如何在 F# 中构建多个泛型构造函数的树 (AST)?
【发布时间】:2017-08-22 02:44:39
【问题描述】:

我正在构建一个小数组语言,并且很难了解如何使用泛型对数组进行编码:

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 解释它的方法。

【问题讨论】:

  • 我对这个问题不太清楚。您能否提供更多信息或您打算如何使用此代码的示例。
  • 我想避免对所有值进行装箱/拆箱,所以想知道是否有办法让eval变成ExprC -&gt; Shape&lt;'T&gt;

标签: generics f# interpreter algebraic-data-types


【解决方案1】:

我认为你在这里有点卡住了,你需要一种具有更高种类的语言。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-16
    相关资源
    最近更新 更多