“拆箱”受歧视工会的多功能类型/寻找好的解决方法
对于一个小型 AST 解析器,我有一个小的可区分联合 type Numerical = | Int of int | Real of float ,可用于其他一些构造,例如 type Vector = Numer…
F# 可区分联合与 C# 类层次结构
我有以下代码: public abstract class A ... public class B : A ... public class C : A ... void my_fct(A x) { if (x is B) { block_1 } else if …
选择是否对 F# 中的小型 AST 使用可区分联合或记录类型
假设我正在实现一个非常简单的玩具语言解析器。我正在决定是使用 DU 还是记录类型(也许两者混合?)。该语言的结构如下: a Namespace consists of a…
与可区分联合相比,在 F# 中使用记录类型时更加详细
let Method = { Name:string } //oversimplification let method_parser = spaces >>. many1Satisfy isLetter .>> spaces |>> (fun name -> { Name=na…
在可区分联合中使用 F# 中的 and 关键字
我今天面临以下 DU 声明: type Grammar = Definition list and Definition = Def of string * Expression and Range = | Char of char | Range of ch…
Haskell 中 FFI 的 Union 和 Type**?
我需要知道如何与 FFI 解析 Unions 和 Type**(例如 int**)? 我知道我需要一个结构的可存储实例,我也可以将它用于联合吗? 像这样的联合: typedef…
F# 判别联合从列表中选择 0 或 1
给定一个从字符串数组映射到可区分联合的映射程序,我想选择特定 DU 类型的实例。我知道会有 0 或 1 个实例。还有比这更聪明的方法吗? type thing = …
如何将大型可区分联合树转换为可读形式?
下面的类型显然非常大,因此手动编写代码将其转换为可读的形式将是乏味的。我想知道以可读形式显示树的最简单方法。 type Element = | Nil | Token of…