私はリストを持っています
derp = [1; をさせてください。2; 3; 4; 5];;
私はこの言語の初心者なので、これはばかげているように思えるかもしれませんが、中間値 (3) だけが必要な場合、どのように返すのでしょうか?
Listモジュールを使用してもかまわない場合は、次のように実行できます。
List.nth derp (List.length derp / 2);;
これを行うには多くの方法があります。あなたのコメントで、このリストには常に 5 つの要素があると言いました。
まず、Pavel ソリューションを使用できますList.nth derp (List.length derp / 2);
。関数に入れたい場合は、let middle list = List.nth list(List.length derp / 2);
2 番目の解決策は、パターン マッチングを使用することです。
let middle list = match list with
| [] -> 0
| p :: q :: r :: s :: t -> r
ここで、リストが Int のリストであると仮定していることに注意してください
3 番目は最初の 1 ソリューションの書き直されたバージョンですが、ここではリストの長さを知っていると思います。
let rec middle list n =
if(n == 0) if(list.isEmpty) failwith "Empty List" else list.head
else middle list (n - 1)