簡體   English   中英

F#->用2個參數折疊

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM