1

たとえば、リストのリストを作成しました。

list1 = [[1; 2]; [3; 4]]

intigerがリストにある場合はtrueを返し、それ以外の場合はfalseを返す関数「is_element」を作成しようとしています。

どのように機能する必要がありますか:

is_element list1 4;;
- : bool = true

私が試したこと:

let rec is_element x = function
[[]] -> false
| [(a:int)::l] -> (a:int) == x || is_element x [l];;

警告が表示されますが、この機能は機能していないようです。

4

2 に答える 2

5

List.memを使用して、要素がリストの一部であるかどうかを確認できます。また、 List.existsを使用して、リストのいずれかの要素が述語を満たすかどうかを確認できます。これら 2 つを組み合わせて、リストのリストに要素が含まれているかどうかを確認できます。

于 2013-04-21T14:00:06.193 に答える
4
let rec is_element x lst = 
let rec aux y = function
  [] -> false
  | a::l -> a==y || aux y l
in
match lst with
  [] -> false
  | a::l -> aux x a || is_element x l;; 

補助関数を使用して要素がリストに含まれているかどうかを確認し、この関数をリストのリストの要素に適用できます。次に、この関数を次のように呼び出す必要があります

is_element 4 list1;;

またはパラメーター (x と lst) の順序を逆にします。

于 2013-04-21T13:56:37.037 に答える