1

リスト内の数字の最初の出現を見つけたい:

let pos_list = function (list , x) -> 
   let rec pos = function 
    |([] , x , i) -> i
    |([y] , x , i) -> if y == x then i
    |(s::t , x , i) -> if s == x then i else pos(t , x , i + 1) in pos(list , x ,  0) ;;

しかし、コンパイラは、式が「uint」型であり、代わりに「int」型で使用されたと不平を言います。

4

3 に答える 3

1

パターン マッチングから 2 番目のケースを削除します。このケースは、 の最後のケースと既に一致していs = y, t = []ます。したがって、関数は次のように簡略化できます

let pos_list (list, x) =
    let rec pos = function 
    | ([], x, i) -> i
    | (s::t, x, i) -> if s == x then i else pos(t, x, i + 1) in pos(list, x, 0) ;;
于 2013-09-15T13:00:07.763 に答える