関数にリストを入力しようとすると、以下の再帰で f# を使用して要素の前半が取り除かれたリストが送信されますが、理解できない基本ケースの問題が発生し続けます。何かご意見は?2 番目のシャドウ リストを使用して、リストの途中まで進む必要がある距離をカウントしています (一度に 2 つの要素を削除することにより)。
let rec dropHalf listToDrop shadowList =
match shadowList with
| [] -> listToDrop
| shadowHead2::shadowHead1::shadowTail -> if shadowTail.Length<=1 then listToDrop else
match listToDrop with
|[] -> listToDrop
|listToDropHead::listToDropTail -> dropHalf listToDropTail shadowTail