2017-08-08 10 views
0

私はocamlを初めて使い、タイプを定義しました。ocamlでこのタイプのリストに新しいタイプとタイプを定義するにはどうしたらいいですか?

type options = 
    | Rock 
    | Paper 
    | Scissors 

オプションのリストも定義します。これは私がそれをしようとしています方法です

type opts = list options; 

私がしようとする機能

Options

任意のアイデアへのオプションのリストリテラルを渡すときマーリンは私に、このエラーを与えますか?私は重要だとは思わないが、私は特に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) 

答えて

3

タイプの問題は次のようになります。あなたの試合の最初の選択肢は、タイプoptsの何かを返します。したがって、2番目の選択肢は、タイプoptsのものも返す必要があります。これは、入力の先頭であるxoptsであることを意味します。これは、入力がoptのリストであることを意味します。言い換えれば、あなたの関数はオプションのリストを取るべきです。しかし、あなたはオプションのリストを渡しています。

+0

ありがとう、これは私のためにすべてに答える! – ceckenrode

関連する問題