-6
私はこの作業のためにList.hdとList.tlを使用しようとしました:OCaml:リストの最初の要素を返すと、それをリストから削除できますか?
let takeCard fst deck =
fst = List.hd deck
List.tl deck
List.hd
は2つの引数を取りますが、私は理由を理解していません。
私はこの作業のためにList.hdとList.tlを使用しようとしました:OCaml:リストの最初の要素を返すと、それをリストから削除できますか?
let takeCard fst deck =
fst = List.hd deck
List.tl deck
List.hd
は2つの引数を取りますが、私は理由を理解していません。
私はここにいくつかの誤解があると思います。
まず、OCamlのほとんどのタイプは不変です。 mutable変数を使用しない限り、「リストから削除する」ことはできません。最初の項目を持たないバージョンのリストのみを返すことができます。両方を返す場合は、tupleを使用してそれを達成することができます。
let takeCard deck = (List.hd deck, List.tl deck)
第2に、List.hdは1つの要素しか取りません。 OCamlはcurryingを利用しています。 OCaml型のシグネチャを読むとき、最初のパラメータは関数が取り込むものであり、最後のパラメータは関数が返すものです。したがって、List.hdの署名'a list -> 'a
は、('a
がプレースホルダとして使用される)リストを取り込み、リストに含まれる種類のもの(この場合は最初の要素)を返します。
コンテンツの品質を向上させるのに役立つこの[URL](http://stackoverflow.com/help)をご確認ください –
'fst = List.hd deck'は' fst'と 'deck'の最初の要素を比較します結果を無視します。 – molbdnilo