fold_right給出了從列表尾部開始的值,但是我想給fold_right一個函數作爲參數,這樣該函數將從列表的頭部開始收集值。 我想要iter
接收從列表頭開始的值。在Ocaml中使用fold_right迭代
連續型傳是關鍵字...。另一個辦法要問的問題是如何fold_left
與fold_right
let fold f ls acc = List.fold_right f ls acc
val iter : ('a -> unit) -> 'a t -> unit
let iter f my_type =
let rec iiter my_type return =
return (fold (fun x y -> f x) my_type())() in iiter my_type (fun x y ->())
但是,當我打電話:
iter (fun a -> print_string a) ["hi";"how";"are";"you"];;
輸出:
youarehowhi
我需要
hihowareyou
我不允許fold_left使用:),否則我會已經做了,我必須只能使用fold_right和從頭開始迭代,而不是尾 – Oleg
@Oleg:左褶可以用右褶實現,反之亦然;看看[這個Haskell文章](https://wiki.haskell.org/Foldl_as_foldr)(注意:foldr的參數順序在Haskell和OCaml之間是不同的) – newacct
@newacct 我也想問一下,如果我上面的問題是可以理解的 – Oleg