Я хочу сделать 2 действия после оператора «then» в операторе «if .. then .. else»

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 "] , что неверно.

Как мне решить эту проблему?

Большое спасибо

5
задан skaffman 15 January 2011 в 13:30
поделиться