let rec filtersList2fromList1 (List1:string list) (List2:string list) : string list =
let finalList = [] in
match List1 with
| s :: tl -> if List.mem s List2 = true
then finalList @ [s] else filtersList2fromList1 tl List2
| [] -> []
так что,
filtersList2fromList1 ["x";"y";"z"] ["z";"x"] would be ["x";"z"]
filtersList2fromList1 ["x";"y";"z"] ["x"] would be ["x"]
то, что я хотел бы добавить, это то, что если оператор «if» истинен, он будет выполнять не только «finalList @ [s]», но также «FiltersList2fromList1 tl List2», так что это будет рекурсия. Без выполнения "FiltersList2fromList1 tl List2", когда оно истинно,
filtersList2fromList1 ["x"; "y"; "z"] ["z"; "x"]
будет только ["x "]
, что неверно.
Как мне решить эту проблему?
Большое спасибо