Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
OCaml `List.group_by`
let group_by (f : 'a -> 'b) (ll : 'a list) : ('b, 'a list) Hashtbl.t =
List.fold_left
(fun acc e ->
let grp = f e in
let grp_mems = try Hashtbl.find acc grp with Not_found -> [] in
Hashtbl.replace acc grp (e :: grp_mems);
acc)
(Hashtbl.create 100)
ll;;

martinklepsch commented Nov 24, 2017

(* Not working (yet) *)
let group_by (f : 'a -> 'b) (ll : 'a list) : ('b, 'a list) Hashtbl.t =
  List.fold
    ll
    ~init:(Hashtbl.create ~size:100)
    ~f:
    (fun acc e ->
       let grp = f e in
       let grp_mems = try Hashtbl.find acc grp with Not_found -> [] in
       Hashtbl.replace acc grp (e :: grp_mems))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment