Import Upstream version 20180207
[hcoop/debian/mlton.git] / lib / mlton / basic / integer.sig
1 (* Copyright (C) 1999-2005 Henry Cejtin, Matthew Fluet, Suresh
2 * Jagannathan, and Stephen Weeks.
3 *
4 * MLton is released under a BSD-style license.
5 * See the file MLton-LICENSE for details.
6 *)
7
8 signature INTEGER_STRUCTS =
9 sig
10 eqtype int
11
12 val * : int * int -> int
13 val + : int * int -> int
14 val - : int * int -> int
15 val < : int * int -> bool
16 val <= : int * int -> bool
17 val > : int * int -> bool
18 val >= : int * int -> bool
19 val abs: int -> int
20 val compare: int * int -> order
21 val div: int * int -> int
22 val divMod: int * int -> int * int
23 val fmt: StringCvt.radix -> int -> string
24 val fromInt: Pervasive.Int.int -> int
25 val fromLarge: Pervasive.LargeInt.int -> int
26 val fromString: string -> int option
27 val max: int * int -> int
28 val maxInt: int option
29 val min: int * int -> int
30 val minInt: int option
31 val mod: int * int -> int
32 val precision: Pervasive.Int.int option
33 val quot: int * int -> int
34 val quotRem: int * int -> int * int
35 val rem: int * int -> int
36 val sameSign: int * int -> bool
37 val scan: StringCvt.radix
38 -> (char, 'a) StringCvt.reader
39 -> (int, 'a) StringCvt.reader
40 val sign: int -> Pervasive.Int.int
41 val toInt: int -> Pervasive.Int.int
42 val toIntInf: int -> Pervasive.IntInf.int
43 val toLarge: int -> Pervasive.LargeInt.int
44 val toString: int -> string
45 val ~ : int -> int
46 end
47
48 signature INTEGER =
49 sig
50 include EUCLIDEAN_RING
51 type int = t
52
53 val < : t * t -> bool
54 val <= : t * t -> bool
55 val > : t * t -> bool
56 val >= : t * t -> bool
57 val abs: t -> t
58 val choose: t * t -> t
59 val compare: t * t -> Relation.t
60 val exists: t * t * (t -> bool) -> bool
61 val factorial: t -> t
62 val fold: t * t * 'a * (t * 'a -> 'a) -> 'a
63 val foldDown: t * t * 'a * (t * 'a -> 'a) -> 'a
64 val for: t * t * (t -> unit) -> unit
65 val forall: t * t * (t -> bool) -> bool
66 val format: t * StringCvt.radix -> string
67 val forDown: t * t * (t -> unit) -> unit
68 val fromString: string -> t option
69 exception Input
70 val input: In0.t -> t
71 val isEven: t -> bool
72 val isNegative: t -> bool
73 val isOdd: t -> bool
74 val isPositive: t -> bool
75 (* largest (i, f) is the largest j <= i such that f j *)
76 val largest: t * (t -> bool) -> t
77 val least: t * t * (t -> bool) -> t option
78 val map: t * t * (t -> 'a) -> 'a list
79 val max: t * t -> t
80 val min: t * t -> t
81 val output: t * Out.t -> unit
82 val quot: t * t -> t
83 val quotRem: t * t -> t * t
84 val rem: t * t -> t
85 val scan: (StringCvt.radix * (char, 'a) StringCvt.reader)
86 -> (t, 'a) StringCvt.reader
87 (* smallest (i, f) is the smallest j >= i such that f j *)
88 val smallest: t * (t -> bool) -> t
89 (* val sum: {from: t, to: t, term: t -> t} -> t *)
90 val toCommaString: t -> string
91 val toInt: t -> Pervasive.Int.int
92 val toIntInf: t -> Pervasive.IntInf.int
93 val toLarge: t -> Pervasive.LargeInt.int
94 val toString: t -> string
95 end