open Core module Time_ns = Time_ns_unix module List = struct include List let map_result ~(f : 'a -> ('b, 'c) result) : 'a list -> ('b list, 'c) result = let open Result.Let_syntax in let rec go = function | [] -> return [] | x :: xs -> let%map x' = f x and xs' = go xs in x' :: xs' in go end module Result = struct include Result let unwrap = function | Error _ -> failwith "Result.unwrap: unexpected (Error _)" | Ok v -> v end let () = let ams_tz = Time_ns.Zone.find_exn "Europe/Amsterdam" in let prim_txs = In_channel.with_file ~binary:true "test.csv" ~f:(Rdcapsis.Ingcsv.read_channel ~ams_tz) |> Result.unwrap in let euc_id = "EUC" in let ledger = List.map_result ~f:(Rdcapsis.Convert.les_from_current_acc euc_id) prim_txs |> Result.unwrap |> List.concat in print_endline (Sexp.to_string_hum ([%sexp_of: Rdcapsis.Ledger.t] ledger))