別のリストで特定の値が出現するインデックスのリストを返す方法を見つけようとしています。つまり、index(1, [1,2,1,1,2,2,1]); val it = [1,3,4,7] int リスト
リストがどのように機能するかを理解しようとしていて、再帰を改善しようとしているので、List.nth (またはライブラリ関数) を使用したくありません。パターン マッチングの静かな状態にはまだ移行したくありません。
これは私がこれまでに持っているものです
fun index(x, L) =
if null L then 0
else if x=hd(L) then
1
else
1 + index(x,tl L);
fun inde(x, L) =
if null L then []
else if x=hd(L) then
index(x, tl L) :: inde(x, tl L)
else
inde(x, tl L);
index(4, [4,2,1,3,1,1]);
inde(1,[1,2,1,1,2,2,1]);
これにより、[2, 1, 3, 0] のような結果が得られます。インデックスを取得するために物事を適切にインクリメントするのに苦労しているだけだと思います。ただし、インデックス関数自体は正しく機能します。