Alpha/Endorser: use filter rather than filter_map
This commit is contained in:
parent
52dc0c5858
commit
204a1c9b6a
@ -438,6 +438,28 @@ module Make(Prefix : sig val id : string end) = struct
|
|||||||
tt >>=? fun rt ->
|
tt >>=? fun rt ->
|
||||||
return (rh :: rt)
|
return (rh :: rt)
|
||||||
|
|
||||||
|
let rec filter_s f l =
|
||||||
|
match l with
|
||||||
|
| [] -> return []
|
||||||
|
| h :: t ->
|
||||||
|
f h >>=? function
|
||||||
|
| false -> filter_s f t
|
||||||
|
| true ->
|
||||||
|
filter_s f t >>=? fun t ->
|
||||||
|
return (h :: t)
|
||||||
|
|
||||||
|
let rec filter_p f l =
|
||||||
|
match l with
|
||||||
|
| [] -> return []
|
||||||
|
| h :: t ->
|
||||||
|
let jh = f h
|
||||||
|
and t = filter_p f t in
|
||||||
|
jh >>=? function
|
||||||
|
| false -> t
|
||||||
|
| true ->
|
||||||
|
t >>=? fun t ->
|
||||||
|
return (h :: t)
|
||||||
|
|
||||||
let rec iter_s f l =
|
let rec iter_s f l =
|
||||||
match l with
|
match l with
|
||||||
| [] -> return ()
|
| [] -> return ()
|
||||||
|
@ -151,6 +151,12 @@ module type S = sig
|
|||||||
val filter_map_p :
|
val filter_map_p :
|
||||||
('a -> 'b option tzresult Lwt.t) -> 'a list -> 'b list tzresult Lwt.t
|
('a -> 'b option tzresult Lwt.t) -> 'a list -> 'b list tzresult Lwt.t
|
||||||
|
|
||||||
|
(** A {!List.filter} in the monad *)
|
||||||
|
val filter_s :
|
||||||
|
('a -> bool tzresult Lwt.t) -> 'a list -> 'a list tzresult Lwt.t
|
||||||
|
val filter_p :
|
||||||
|
('a -> bool tzresult Lwt.t) -> 'a list -> 'a list tzresult Lwt.t
|
||||||
|
|
||||||
(** A {!List.fold_left} in the monad *)
|
(** A {!List.fold_left} in the monad *)
|
||||||
val fold_left_s :
|
val fold_left_s :
|
||||||
('a -> 'b -> 'a tzresult Lwt.t) -> 'a -> 'b list -> 'a tzresult Lwt.t
|
('a -> 'b -> 'a tzresult Lwt.t) -> 'a -> 'b list -> 'a tzresult Lwt.t
|
||||||
|
@ -144,12 +144,7 @@ let prepare_endorsement (cctxt : #Proto_alpha.full) ~(max_past:int64) state bi =
|
|||||||
let time = Time.(add (now ()) state.delay) in
|
let time = Time.(add (now ()) state.delay) in
|
||||||
let timeout = Lwt_unix.sleep (Int64.to_float state.delay) in
|
let timeout = Lwt_unix.sleep (Int64.to_float state.delay) in
|
||||||
tzforce state.delegates >>=? fun delegates ->
|
tzforce state.delegates >>=? fun delegates ->
|
||||||
filter_map_p
|
filter_p (allowed_to_endorse cctxt bi) delegates >>=? fun delegates ->
|
||||||
(fun delegate ->
|
|
||||||
allowed_to_endorse cctxt bi delegate >>=? function
|
|
||||||
| true -> return (Some delegate)
|
|
||||||
| false -> return None)
|
|
||||||
delegates >>=? fun delegates ->
|
|
||||||
state.pending <- Some {
|
state.pending <- Some {
|
||||||
time ;
|
time ;
|
||||||
timeout ;
|
timeout ;
|
||||||
|
Loading…
Reference in New Issue
Block a user