Types 如何在ocaml中为该类型的列表定义新类型和类型?

Types 如何在ocaml中为该类型的列表定义新类型和类型?,types,ocaml,reason,Types,Ocaml,Reason,我是ocaml新手,已经定义了一个类型 type options = | Rock | Paper | Scissors 我还想定义一个选项列表。我就是这样尝试的 type opts = list options; 当我尝试将选项的文本列表传递给函数时,Merlin给了我这个错误 有什么想法吗?顺便说一句,我使用的是ReasonML,虽然我认为这并不重要 下面是转换回ocaml的整个函数 let compGuess () = let rec aux opts k =

我是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)

您的类型问题如下所示。匹配的第一个选项返回类型为
opts
的内容。因此,第二个备选方案还必须返回类型为
opts
的内容。这意味着输入的头
x
,属于
opts
类型。这意味着输入是一个选项列表。换句话说,您的函数应该包含一个选项列表。但是您正在传递一个选项列表。

您的类型问题如下所示。匹配的第一个选项返回类型为
opts
的内容。因此,第二个备选方案还必须返回类型为
opts
的内容。这意味着输入的头
x
,属于
opts
类型。这意味着输入是一个选项列表。换句话说,您的函数应该包含一个选项列表。但是您正在传递一个选项列表。

谢谢,这为我解答了所有问题!谢谢,这为我解答了一切!