【发布时间】:2015-02-11 20:54:56
【问题描述】:
使用这两个有区别的工会 (DU):
type Premier = |M1 of int
type Second = |M2 of Premier
我可以拥有这些有效的代码行:
let p_1 = M1 42
let p_2 = 42 |> M1
let p_3 = Premier.M1 42
let s_1 = M2 (M1 42)
let s_2 = 42 |> M1 |> M2
但不接受以下嵌套 dot 语法(与类语法的重要区别):
let s_3 = Second.M2.M1 42
问题:根本原因是什么?我的意思是与 F# 语法/语法的其他部分是否存在冲突或不一致会阻止它?还是会导致类型推断困难?
跟进:我仍然有 2 种方法(s_1 和 s_2)来定义我的 Second 类型变量,但是对于 DU,是否有更惯用和简洁的第三种方法?
【问题讨论】:
标签: f#