1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
(* src/packages/dataframe/t_write_arrow.ml *)
open Ast
let register env =
(*
--# Write Arrow IPC file
--#
--# Writes a DataFrame to an Apache Arrow IPC (Feather v2) file.
--#
--# @name write_arrow
--# @param df :: DataFrame The DataFrame to write.
--# @param path :: String The output file path.
--# @return :: Null
--# @example
--# write_arrow(df, "data.arrow")
--# @family dataframe
--# @seealso read_arrow
--# @export
*)
Env.add "write_arrow"
(make_builtin ~name:"write_arrow" 2 (fun args _env ->
match args with
| [VDataFrame df; VString path] ->
(match Arrow_io.write_ipc df.arrow_table path with
| Ok () -> (VNA NAGeneric)
| Error msg -> Error.make_error FileError (Printf.sprintf "File Error: %s." msg))
| [_; VString _] -> Error.type_error "Function `write_arrow` expects a DataFrame as first argument."
| [VDataFrame _; _] -> Error.type_error "Function `write_arrow` expects a String path as second argument."
| [_; _] -> Error.type_error "Function `write_arrow` expects (DataFrame, String)."
| _ -> Error.arity_error_named "write_arrow" 2 (List.length args)
))
env