【问题标题】:How can I define a new type and a type for list of this type in ocaml?如何在 ocaml 中为这种类型的列表定义新类型和类型?
【发布时间】:2017-08-09 06:04:11
【问题描述】:

我是 ocaml 的新手,并且已经定义了一个类型。

type options =
  | Rock
  | Paper
  | Scissors

我还想定义一个选项列表。这就是我正在尝试的方式

type opts = list options;

当我尝试将选项的文字列表传递给函数时,Merlin 给了我这个错误

有什么想法吗?顺便说一句,尽管我认为这并不重要,但我正在专门使用 ReasonML。

这是翻译回 ocaml 的整个函数。

let compGuess () =
  let rec aux opts k =
    match opts with
    | [] -> [Rock]
    | x::[] -> x
    | h::t -> (match k = 1 with | true  -> h | false  -> aux t (k - 1)) in
  aux [Rock; Paper; Scissors] ((Random.int 3) + 1)

【问题讨论】:

    标签: types ocaml reason


    【解决方案1】:

    您的类型问题如下所示。您的匹配项的第一个选项返回 opts 类型的内容。因此,第二种选择也必须返回opts 类型的东西。这意味着输入的头部x 的类型为opts。这意味着输入是一个选项列表。换句话说,您的函数应该采用选项列表。但是你传递了一个选项列表。

    【讨论】:

    • 谢谢,这一切都为我解答!
    猜你喜欢
    • 2017-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多