gpt4 book ai didi

types - Ocaml 抽象类型和类型推断

转载 作者:行者123 更新时间:2023-12-01 15:20:47 27 4
gpt4 key购买 nike

我对 OCaml 中的抽象类型有疑问。

假设我有一个隐藏某种类型的模块:

module Test : sig
type t
val make_t : unit -> t
end = struct
type t = int option
let make_t () = Some 42
end

我还有一个操作可选值的函数:

let do_work : 'a option -> unit = function
| Some x -> Printf.printf "Some\n"
| None -> Printf.printf "None\n"

毫不奇怪,当我在 t 实例上调用 do_work 时,我遇到了类型错误:

let () =
do_work @@ Test.make_t ()

Error: This expression has type Test.t but an expression was expected of type 'a option

在我的应用程序中,我有 tint 选项 更复杂,我不想向外暴露它的内部结构。但是,我想告诉 OCaml 编译器 t 实际上是 something option。我怎样才能做到这一点?

最佳答案

最直接的方法是只将选项的内容类型抽象化:

module Test :
sig
type t'
type t = t' option
val make_t : unit -> t
end =
struct
type t' = int
type t = t' option
let make_t () = Some 42
end

关于types - Ocaml 抽象类型和类型推断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44906193/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com