partition函数:
let (x,y) = List.partition (fun n -> n % 2 = 0) lst1
printfn "%A" x
printfn "%A" y
[1; 3; 5]
fold函数
let x = List.fold (fun (s:int) (n:int) -> s + n) 0 lst1
printfn "%A" x
Step 1初始值:传入0(第2个参数)Step 2调用lambda表达式此时将list的第1个元素的值存入n中s值为Step1传入的0执行n + s,保存结果Step 3调用lambda表达式此时将list的第2个元素的值存入n中s值为Step2的计算结果执行n + s(即2+1),保存结果...
let x = List.fold (fun (s:string) (n:char) ->
if s.Length = 0 then n.ToString() else s + "-" + n.ToString()) "" lst2
printfn "%A" x
感觉确实做得有点过了。如果再复杂点恐怕就写不了了,就此为止吧。
choose函数
let q = List.choose (fun (n:int) -> if n % 2 = 0 then Some (n*2) else None) lst3
printfn "%A" q
let q1 = lst4
|> List.filter (fun (n:int) -> n % 2 = 0)
|> List.map (fun (n:int) -> n * 2)
printfn "%A" q1