Source file luamathlib.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
module M (I : Lua.Lib.CORE) = struct
  module V = I.V
  let ( **-> ) = V.( **-> )
  let ( **->> ) x y = x **-> V.result y
  let float = V.float
let math_builtins =
  [ "abs",        V.efunc (float **->> float)            abs_float
  ; "acos",       V.efunc (float **->> float)            acos
  ; "asin",       V.efunc (float **->> float)            asin
  ; "atan",       V.efunc (float **->> float)            atan
  ; "atan2",      V.efunc (float **-> float **->> float) atan2
  ; "ceil",       V.efunc (float **->> float)            ceil
  ; "cos",        V.efunc (float **->> float)            cos
  ; "floor",      V.efunc (float **->> float)            floor
  ; "log",        V.efunc (float **->> float)            log
  ; "log10",      V.efunc (float **->> float)            log10
  ; "max",        V.efunc (float **-> float **->> float) max
  ; "min",        V.efunc (float **-> float **->> float) min
  ; "mod",        V.efunc (float **-> float **->> float) mod_float
  ; "sin",        V.efunc (float **->> float)            sin
  ; "sqrt",       V.efunc (float **->> float)            sqrt
  ; "tan",        V.efunc (float **->> float)            tan
  ; "random",     V.efunc (V.value **->> float)          (fun _ -> Random.float 1.0)
  ; "randomseed", V.efunc (V.int **->> V.unit)           Random.init
  ] 

  let init = I.register_globals math_builtins
end