f# - F# 中是否存在与 DU 的 [<RequireQualifiedAccess>] 属性等效的 OCaml?

标签 f# ocaml discriminated-union

在 F# 程序中我更喜欢使用

[<RequireQualifiedAccess>]
type MyType =
    | FirstOption of string
    | SecondOption of int

因此,在使用MyType的代码中,我被迫编写MyType.FirstOption,而不仅仅是FirstOption。有没有办法在 OCaml 中强制执行此操作?

最佳答案

您可以通过在模块中定义类型来获得类似的效果。

$ ocaml
        OCaml version 4.02.1

# module MyType = struct
    type t = FirstOption of string | SecondOption of int
    end    ;;
module MyType : sig type t = FirstOption of string | SecondOption of int end
# MyType.FirstOption "abc";;
- : MyType.t = MyType.FirstOption "abc"
# FirstOption "abc";;
Error: Unbound constructor FirstOption
#

如果您这样做,类型的名称(如您所见)是 MyType.t。

关于f# - F# 中是否存在与 DU 的 [<RequireQualifiedAccess>] 属性等效的 OCaml?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30564299/

相关文章:

asp.net - 在 F# 中,如何判断对象是否为 Async<_>,以及如何将其转换为 Async<_>?

f# - 我们如何在调用测试方法之前静态初始化测试数据?

haskell - 处理函数式编程中增量数据建模的变化

python - OCaml 中的 Cholesky 分解

f# - 如何比较深度嵌套的歧视工会?

f# - 在给定目的地的(DAG)有向无环图中寻找路径

f# - 如何在 F# 中处理 IEnumerable?

types - 有没有办法在 OCaml 类型系统中嵌入单元处理逻辑?

f# - 枚举与非成员歧视工会

f# - 用可区分联合和记录类型表示浮点