package ocamlmig
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
OCaml source code rewriting tool
Install
dune-project
Dependency
Authors
Maintainers
Sources
ocamlmig-5.4-20251020.tbz
sha256=cefdf4a018a159ae253786f82208e6b86529f417d77910c5a1875a900502e98c
sha512=a09a06bfb069933fc7ef2ce9fdca9a9b794d9e740e4a1cd7ddfebdf4d886b4ee3b8e00b098068acfb816cd87e0ea87015cfc1b19f198282422151d6c5b6f16cb
doc/src/ocamlmig.stdlib_to_stdlib/stdlib_to_stdlib.ml.html
Source file stdlib_to_stdlib.ml
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 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140(** Migration attributes to move from Stdlib names to other preferred Stdlib names, like using [Float.acos] instead of [acos]. This is intended to be used this way: {v ocamlmig migrate -extra-migration ocamlmig.stdlib_to_stdlib v} *) (* let _ = [ ( == ); phys_equal ] [@@migrate] let _ = [ ( != ); (fun a b -> not (phys_equal a b)) ] [@@migrate] *) let _ = [ succ; Int.succ ] [@migrate] let _ = [ pred; Int.pred ] [@migrate] let _ = [ abs; Int.abs ] [@migrate] let _ = [ max_int; Int.max_int ] [@migrate] let _ = [ min_int; Int.min_int ] [@migrate] let _ = [ exp; Float.exp ] [@migrate] let _ = [ expm1; Float.expm1 ] [@migrate] let _ = [ acos; Float.acos ] [@migrate] let _ = [ asin; Float.asin ] [@migrate] let _ = [ atan; Float.atan ] [@migrate] let _ = [ atan2; Float.atan2 ] [@migrate] let _ = [ hypot; Float.hypot ] [@migrate] let _ = [ cos; Float.cos ] [@migrate] let _ = [ cosh; Float.cosh ] [@migrate] let _ = [ acosh; Float.acosh ] [@migrate] let _ = [ log; Float.log ] [@migrate] let _ = [ log10; Float.log10 ] [@migrate] let _ = [ log1p; Float.log1p ] [@migrate] let _ = [ sin; Float.sin ] [@migrate] let _ = [ sinh; Float.sinh ] [@migrate] let _ = [ asinh; Float.asinh ] [@migrate] let _ = [ sqrt; Float.sqrt ] [@migrate] let _ = [ tan; Float.tan ] [@migrate] let _ = [ tanh; Float.tanh ] [@migrate] let _ = [ atanh; Float.atanh ] [@migrate] let _ = [ ceil; Float.ceil ] [@migrate] let _ = [ floor; Float.floor ] [@migrate] let _ = [ abs_float; Float.abs ] [@migrate] let _ = [ copysign; Float.copy_sign ] [@migrate] let _ = [ mod_float; Float.rem ] [@migrate] let _ = [ frexp; Float.frexp ] [@migrate] let _ = [ ldexp; Float.ldexp ] [@migrate] let _ = [ modf; Float.modf ] [@migrate] let _ = [ float; Float.of_int ] [@migrate] let _ = [ float_of_int; Float.of_int ] [@migrate] let _ = [ truncate; Float.to_int ] [@migrate] let _ = [ int_of_float; Float.to_int ] [@migrate] let _ = [ infinity; Float.infinity ] [@migrate] let _ = [ neg_infinity; Float.neg_infinity ] [@migrate] let _ = [ nan; Float.nan ] [@migrate] let _ = [ max_float; Float.max_float ] [@migrate] let _ = [ min_float; Float.min_float ] [@migrate] let _ = [ epsilon_float; Float.epsilon ] [@migrate] let _ = [ classify_float; Float.classify_float ] [@migrate] let _ = [ int_of_char; Char.code ] [@migrate] let _ = [ char_of_int; Char.chr ] [@migrate] let _ = [ string_of_float; Float.to_string ] [@migrate] let _ = [ float_of_string; Float.of_string ] [@migrate] let _ = [ float_of_string_opt; Float.of_string_opt ] [@migrate] (* We could migrate the following values, but this is not clearly better. let _ = [ stdin; In_channel.stdin ] [@migrate] let _ = [ stdout; Out_channel.stdout ] [@migrate] let _ = [ stderr; Out_channel.stderr ] [@migrate] *) let _ = [ print_char; (fun c -> Out_channel.output_char stdout c) ] [@migrate] (* let _ = [ print_string; (fun c -> Out_channel.output_string stdout c) ] [@migrate] *) let _ = [ print_bytes; (fun c -> Out_channel.output_bytes stdout c) ] [@migrate] let _ = [ print_int; (fun n -> Out_channel.output_string stdout (Int.to_string n)) ] [@migrate] let _ = [ print_float; (fun f -> Out_channel.output_string stdout (Float.to_string f)) ] [@migrate] (* no equivalent of print_endline/print_newline in Out_channel, weirdly *) let _ = [ prerr_char; (fun c -> Out_channel.output_char stderr c) ] [@migrate] (* let _ = [ prerr_string; (fun c -> Out_channel.output_string stderr c) ] [@migrate] *) let _ = [ prerr_bytes; (fun c -> Out_channel.output_bytes stderr c) ] [@migrate] let _ = [ prerr_int; (fun n -> Out_channel.output_string stderr (Int.to_string n)) ] [@migrate] let _ = [ prerr_float; (fun f -> Out_channel.output_string stderr (Float.to_string f)) ] [@migrate] (* no equivalent of prerr_endline/prerr_newline in Out_channel *) (* read_{line,int,int_opt,float,float_opt} seems very specific functions. Not sure if it is of any help of migrate read_float to Float.of_string (read_line ()) *) let _ = [ open_out; Out_channel.open_text ] [@migrate] let _ = [ open_out_bin; Out_channel.open_bin ] [@migrate] let _ = [ open_out_gen; Out_channel.open_gen ] [@migrate] let _ = [ flush; Out_channel.flush ] [@migrate] let _ = [ flush_all; Out_channel.flush_all ] [@migrate] let _ = [ output_char; Out_channel.output_char ] [@migrate] let _ = [ output_string; Out_channel.output_string ] [@migrate] let _ = [ output_bytes; Out_channel.output_bytes ] [@migrate] let _ = [ output; Out_channel.output ] [@migrate] let _ = [ output_substring; Out_channel.output_substring ] [@migrate] let _ = [ output_value; (fun ch a -> Marshal.to_channel ch a []) ] [@migrate] (* We could map seek_out to (fun ch n -> Out_channel.seek ch (Int64.of_int n)), and similarly for the other functions manipulating file offsets, but: - seek_out works perfectly fine on 4+GB files on 64bit - 64bit are required in native code with ocaml 5 - using Int64 makes code heavier and slower So we'd be making code less nice purely so bytecode can work. Meh. It won't matter in browsers either. It might matter if you had wasm outside of the browser. *) let _ = [ LargeFile.seek_out; Out_channel.seek ] [@migrate] let _ = [ LargeFile.pos_out; Out_channel.pos ] [@migrate] let _ = [ LargeFile.out_channel_length; Out_channel.length ] [@migrate] let _ = [ close_out; Out_channel.close ] [@migrate] let _ = [ close_out_noerr; Out_channel.close_noerr ] [@migrate] let _ = [ set_binary_mode_out; Out_channel.set_binary_mode ] [@migrate] let _ = [ open_in_bin; In_channel.open_bin ] [@migrate] let _ = [ open_in; In_channel.open_text ] [@migrate] let _ = [ open_in_gen; In_channel.open_gen ] [@migrate] let _ = [ input; In_channel.input ] [@migrate] let _ = [ input_value; Marshal.from_channel ] [@migrate] let _ = [ LargeFile.seek_in; In_channel.seek ] [@migrate] let _ = [ LargeFile.pos_in; In_channel.pos ] [@migrate] let _ = [ LargeFile.in_channel_length; In_channel.length ] [@migrate] let _ = [ close_in; In_channel.close ] [@migrate] let _ = [ close_in_noerr; In_channel.close_noerr ] [@migrate] let _ = [ set_binary_mode_in; In_channel.set_binary_mode ] [@migrate]
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>