signature PAR_LIST = sig valmap': {name: string, sequential: bool} -> ('a -> 'b) -> 'a list -> 'b list val map_independent: ('a -> 'b) -> 'a list -> 'b list valmap: ('a -> 'b) -> 'a list -> 'b list val get_some: ('a -> 'b option) -> 'a list -> 'b option val find_some: ('a -> bool) -> 'a list -> 'a option valexists: ('a -> bool) -> 'a list -> bool val forall: ('a -> bool) -> 'a list -> bool end;
structure Par_List: PAR_LIST = struct
fun managed_results {name, sequential} f xs = if sequential orelse not (Future.relevant xs) thenmap (Exn.capture f) xs else
Future.forked_results
{name = if name = ""then"Par_List.map"else name, deps = []}
(map (fn x => fn () => f x) xs);
funmap' params f xs = Par_Exn.release_first (managed_results params f xs); funmap f = map' {name = "", sequential = false} f; fun map_independent f = map (Exn.result f) #> Par_Exn.release_all;
fun get_some f xs = let
exception FOUND of'b; val results =
managed_results {name = "Par_List.get_some", sequential = false}
(fn x => (case f x of NONE => () | SOME y => raise FOUND y)) xs; in
(case get_first (fn Exn.Exn (FOUND res) => SOME res | _ => NONE) results of
NONE => (Par_Exn.release_first results; NONE)
| some => some) end;
fun find_some P = get_some (fn x => if P x then SOME x else NONE);
funexists P = is_some o find_some P; fun forall P = not o exists (not o P);
end;
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.11 Sekunden
(vorverarbeitet am 2026-06-30)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.