[英]F# -> Fold with 2 parameters
我正在嘗試進行自定義棄牌,這貫穿我的順序,花了2個Teams
時間並將其分配給Match
,然后最后返回Match list
。
我當前的代碼是:
let myFold f s =
let rec myFold' f s acc =
match s with
| (a1::a2::a) -> f a1 a2::acc
| _ -> acc
myFold' f s []
這給了我(int -> int) list
但是顯然那是行不通的...我在做什么錯? ->我知道我只可以創建為此場景特制的遞歸函數,但是我想使其盡可能抽象以便重用。
我不太確定我能得到您想要實現的目標。 從序列[1; 2; 3; 4]中,您想要獲得[(1,2); (3,4)]或[(1,2); (2,3); (3,4)]?
let fold f s =
let rec impl acc = function
| x::y::rest -> impl ((f x y)::acc) rest
| _ -> List.rev acc
impl [] s
let s = [1;2;3;4;5;6]
let r = fold (fun x y -> x,y) s // [(1, 2); (3, 4); (5, 6)]
let fold2 f s = Seq.pairwise s |> Seq.map f |> Seq.toList
let r2 = fold2 id s // [(1, 2); (2, 3); (3, 4); (4, 5); (5, 6)]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.