2017-08-08 55 views
0

我是ocaml的新手,已經定義了一個類型。如何在ocaml中定義這種類型的列表的新類型和類型?

type options = 
    | Rock 
    | Paper 
    | Scissors 

我也想定義一個選項列表。這就是我如何努力也

type opts = list options; 

梅林給我這個錯誤,當我嘗試過的選項文字列表到函數

Options

任何想法?順便說一句,我特別使用RationalML,但我認爲不重要。

下面是翻譯回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) 

回答

3

您的類型問題看起來如下所示。你的比賽的第一個選擇返回opts類型的東西。因此,第二種選擇也必須返回opts類型的東西。這意味着輸入頭的x的類型爲opts。這意味着輸入是選擇列表。換句話說,你的函數應該包含一個選項列表。但是你傳遞了一個選項列表。

+0

謝謝,這回答我的一切! – ceckenrode