You can subscribe to this list here.
| 2005 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(56) |
Sep
(40) |
Oct
(30) |
Nov
(144) |
Dec
(23) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2006 |
Jan
(41) |
Feb
(29) |
Mar
(31) |
Apr
(39) |
May
(193) |
Jun
(45) |
Jul
(19) |
Aug
(3) |
Sep
(23) |
Oct
(83) |
Nov
(92) |
Dec
(123) |
| 2007 |
Jan
(90) |
Feb
(267) |
Mar
(120) |
Apr
(51) |
May
(40) |
Jun
(121) |
Jul
(109) |
Aug
(173) |
Sep
(77) |
Oct
(52) |
Nov
(121) |
Dec
(62) |
| 2008 |
Jan
(76) |
Feb
(53) |
Mar
(98) |
Apr
(87) |
May
(26) |
Jun
(27) |
Jul
(23) |
Aug
(136) |
Sep
(79) |
Oct
(68) |
Nov
(29) |
Dec
(14) |
| 2009 |
Jan
(7) |
Feb
(2) |
Mar
(11) |
Apr
(75) |
May
(1) |
Jun
(95) |
Jul
(19) |
Aug
(4) |
Sep
(8) |
Oct
(93) |
Nov
(43) |
Dec
(21) |
| 2010 |
Jan
(20) |
Feb
(23) |
Mar
(18) |
Apr
(6) |
May
(20) |
Jun
(23) |
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2011 |
Jan
(2) |
Feb
(6) |
Mar
(15) |
Apr
(5) |
May
(9) |
Jun
(14) |
Jul
(9) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2012 |
Jan
|
Feb
(3) |
Mar
|
Apr
|
May
(2) |
Jun
(17) |
Jul
(37) |
Aug
|
Sep
(1) |
Oct
(6) |
Nov
|
Dec
|
| 2013 |
Jan
|
Feb
|
Mar
(5) |
Apr
(2) |
May
(7) |
Jun
(11) |
Jul
(8) |
Aug
|
Sep
(1) |
Oct
(2) |
Nov
|
Dec
|
| 2014 |
Jan
|
Feb
(2) |
Mar
(1) |
Apr
|
May
(1) |
Jun
(1) |
Jul
(7) |
Aug
(2) |
Sep
|
Oct
(5) |
Nov
(2) |
Dec
(4) |
| 2015 |
Jan
|
Feb
(2) |
Mar
(2) |
Apr
|
May
|
Jun
(9) |
Jul
(1) |
Aug
|
Sep
|
Oct
(4) |
Nov
(1) |
Dec
|
| 2016 |
Jan
(2) |
Feb
(1) |
Mar
(1) |
Apr
(1) |
May
(1) |
Jun
(2) |
Jul
(1) |
Aug
|
Sep
(5) |
Oct
|
Nov
|
Dec
|
| 2017 |
Jan
(1) |
Feb
(3) |
Mar
(3) |
Apr
(7) |
May
(2) |
Jun
(2) |
Jul
(5) |
Aug
(1) |
Sep
(2) |
Oct
(17) |
Nov
(4) |
Dec
(7) |
| 2018 |
Jan
(5) |
Feb
(14) |
Mar
(2) |
Apr
(5) |
May
(2) |
Jun
(5) |
Jul
|
Aug
(2) |
Sep
|
Oct
(3) |
Nov
(5) |
Dec
|
| 2019 |
Jan
(4) |
Feb
(2) |
Mar
(3) |
Apr
(1) |
May
(8) |
Jun
(14) |
Jul
(2) |
Aug
|
Sep
(2) |
Oct
(2) |
Nov
(15) |
Dec
(2) |
| 2020 |
Jan
(10) |
Feb
(3) |
Mar
(1) |
Apr
|
May
(9) |
Jun
(4) |
Jul
(16) |
Aug
(10) |
Sep
(4) |
Oct
(3) |
Nov
|
Dec
|
| 2021 |
Jan
(11) |
Feb
(2) |
Mar
(2) |
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
(5) |
Sep
|
Oct
(6) |
Nov
(4) |
Dec
(4) |
| 2022 |
Jan
(4) |
Feb
(2) |
Mar
(2) |
Apr
|
May
(6) |
Jun
(3) |
Jul
|
Aug
(1) |
Sep
|
Oct
|
Nov
(1) |
Dec
|
| 2023 |
Jan
|
Feb
|
Mar
|
Apr
(2) |
May
(5) |
Jun
(1) |
Jul
(4) |
Aug
(1) |
Sep
|
Oct
(1) |
Nov
(13) |
Dec
|
| 2024 |
Jan
(1) |
Feb
|
Mar
(5) |
Apr
|
May
(10) |
Jun
|
Jul
|
Aug
(3) |
Sep
|
Oct
|
Nov
(1) |
Dec
(14) |
| 2025 |
Jan
(3) |
Feb
|
Mar
(1) |
Apr
|
May
(2) |
Jun
(3) |
Jul
|
Aug
|
Sep
(2) |
Oct
(3) |
Nov
|
Dec
|
|
From: Vesa K. <ve...@ml...> - 2006-11-12 07:34:06
|
Added convenience aliases Emb.t and Iso.t.
----------------------------------------------------------------------
U mltonlib/trunk/com/ssh/extended-basis/unstable/detail/emb.sml
U mltonlib/trunk/com/ssh/extended-basis/unstable/detail/iso.sml
U mltonlib/trunk/com/ssh/extended-basis/unstable/public/array.sig
U mltonlib/trunk/com/ssh/extended-basis/unstable/public/char.sig
U mltonlib/trunk/com/ssh/extended-basis/unstable/public/emb.sig
U mltonlib/trunk/com/ssh/extended-basis/unstable/public/export.sml
U mltonlib/trunk/com/ssh/extended-basis/unstable/public/int-inf.sig
U mltonlib/trunk/com/ssh/extended-basis/unstable/public/integer.sig
U mltonlib/trunk/com/ssh/extended-basis/unstable/public/iso.sig
U mltonlib/trunk/com/ssh/extended-basis/unstable/public/mono-array.sig
U mltonlib/trunk/com/ssh/extended-basis/unstable/public/mono-vector.sig
U mltonlib/trunk/com/ssh/extended-basis/unstable/public/real.sig
U mltonlib/trunk/com/ssh/extended-basis/unstable/public/string.sig
U mltonlib/trunk/com/ssh/extended-basis/unstable/public/vector.sig
U mltonlib/trunk/com/ssh/extended-basis/unstable/public/word.sig
----------------------------------------------------------------------
Modified: mltonlib/trunk/com/ssh/extended-basis/unstable/detail/emb.sml
===================================================================
--- mltonlib/trunk/com/ssh/extended-basis/unstable/detail/emb.sml 2006-11-08 14:20:18 UTC (rev 4812)
+++ mltonlib/trunk/com/ssh/extended-basis/unstable/detail/emb.sml 2006-11-12 15:34:03 UTC (rev 4813)
@@ -9,6 +9,7 @@
*)
structure Emb :> EMB = struct
type ('a, 'b) emb = ('a -> 'b) * ('b -> 'a option)
+ type ('a, 'b) t = ('a, 'b) emb
val id = (fn a => a, SOME)
Modified: mltonlib/trunk/com/ssh/extended-basis/unstable/detail/iso.sml
===================================================================
--- mltonlib/trunk/com/ssh/extended-basis/unstable/detail/iso.sml 2006-11-08 14:20:18 UTC (rev 4812)
+++ mltonlib/trunk/com/ssh/extended-basis/unstable/detail/iso.sml 2006-11-12 15:34:03 UTC (rev 4813)
@@ -9,6 +9,7 @@
*)
structure Iso :> ISO = struct
type ('a, 'b) iso = ('a -> 'b) * ('b -> 'a)
+ type ('a, 'b) t = ('a, 'b) iso
val id = (fn a => a, fn a => a)
Modified: mltonlib/trunk/com/ssh/extended-basis/unstable/public/array.sig
===================================================================
--- mltonlib/trunk/com/ssh/extended-basis/unstable/public/array.sig 2006-11-08 14:20:18 UTC (rev 4812)
+++ mltonlib/trunk/com/ssh/extended-basis/unstable/public/array.sig 2006-11-12 15:34:03 UTC (rev 4813)
@@ -41,14 +41,14 @@
(** == Isomorphisms == *)
- val isoList : ('a array, 'a list) Iso.iso
+ val isoList : ('a array, 'a list) Iso.t
(**
* An isomorphism between arrays and lists. It is always equivalent to
* {(toList, fromList)}. Note that the isomorphism does not preserve
* identity.
*)
- val isoVector : ('a array, 'a vector) Iso.iso
+ val isoVector : ('a array, 'a vector) Iso.t
(**
* An isomorphism between arrays and vectors. It is always equivalent
* to {(toVector, fromVector)}. Note that the isomorphism does not
Modified: mltonlib/trunk/com/ssh/extended-basis/unstable/public/char.sig
===================================================================
--- mltonlib/trunk/com/ssh/extended-basis/unstable/public/char.sig 2006-11-08 14:20:18 UTC (rev 4812)
+++ mltonlib/trunk/com/ssh/extended-basis/unstable/public/char.sig 2006-11-12 15:34:03 UTC (rev 4813)
@@ -36,7 +36,7 @@
(** == Isomorphisms == *)
- val isoInt : (char, Int.int) Iso.iso
+ val isoInt : (char, Int.int) Iso.t
(**
* An isomorphism between characters and character codes. It always
* equals {(ord, chr)}. Note that the projection part of the
Modified: mltonlib/trunk/com/ssh/extended-basis/unstable/public/emb.sig
===================================================================
--- mltonlib/trunk/com/ssh/extended-basis/unstable/public/emb.sig 2006-11-08 14:20:18 UTC (rev 4812)
+++ mltonlib/trunk/com/ssh/extended-basis/unstable/public/emb.sig 2006-11-12 15:34:03 UTC (rev 4813)
@@ -13,6 +13,11 @@
* Embedding of {'a} into {'b} with injection and projection functions.
*)
+ type ('a, 'b) t = ('a, 'b) emb
+ (**
+ * Convenience alias.
+ *)
+
val id : ('a, 'a) emb
(**
* The identity embedding. This is always equivalent to {(fn a => a,
Modified: mltonlib/trunk/com/ssh/extended-basis/unstable/public/export.sml
===================================================================
--- mltonlib/trunk/com/ssh/extended-basis/unstable/public/export.sml 2006-11-08 14:20:18 UTC (rev 4812)
+++ mltonlib/trunk/com/ssh/extended-basis/unstable/public/export.sml 2006-11-12 15:34:03 UTC (rev 4813)
@@ -6,8 +6,8 @@
(** == Implementation independent extensions == *)
-type ('a, 'b) emb = ('a, 'b) Emb.emb
-type ('a, 'b) iso = ('a, 'b) Iso.iso
+type ('a, 'b) emb = ('a, 'b) Emb.t
+type ('a, 'b) iso = ('a, 'b) Iso.t
signature ARRAY = ARRAY
signature BOOL = BOOL
Modified: mltonlib/trunk/com/ssh/extended-basis/unstable/public/int-inf.sig
===================================================================
--- mltonlib/trunk/com/ssh/extended-basis/unstable/public/int-inf.sig 2006-11-08 14:20:18 UTC (rev 4812)
+++ mltonlib/trunk/com/ssh/extended-basis/unstable/public/int-inf.sig 2006-11-12 15:34:03 UTC (rev 4813)
@@ -27,7 +27,7 @@
(** == Embeddings == *)
- val embString : (int, string) Emb.emb
+ val embString : (int, string) Emb.t
(**
* An embedding of integers into strings. It is always equivalent to
* {(toString, fromString)}.
@@ -35,14 +35,14 @@
(** == Isomorphisms == *)
- val isoInt : (int, Int.int) Iso.iso
+ val isoInt : (int, Int.int) Iso.t
(**
* An isomorphism between integers of type {int} and the default
* integer type. It is always equivalent to {(toInt, fromInt)}. Note
* that one of the injection and projection parts may be partial.
*)
- val isoLarge : (int, LargeInt.int) Iso.iso
+ val isoLarge : (int, LargeInt.int) Iso.t
(**
* An isomorphism between integers of type {int} and integers of type
* {LargeInt.int}. It is always equivalent to {(toLarge, fromLarge)}.
Modified: mltonlib/trunk/com/ssh/extended-basis/unstable/public/integer.sig
===================================================================
--- mltonlib/trunk/com/ssh/extended-basis/unstable/public/integer.sig 2006-11-08 14:20:18 UTC (rev 4812)
+++ mltonlib/trunk/com/ssh/extended-basis/unstable/public/integer.sig 2006-11-12 15:34:03 UTC (rev 4813)
@@ -27,7 +27,7 @@
(** == Embeddings == *)
- val embString : (int, string) Emb.emb
+ val embString : (int, string) Emb.t
(**
* An embedding of integers into strings. It is always equivalent to
* {(toString, fromString)}.
@@ -35,14 +35,14 @@
(** == Isomorphisms == *)
- val isoInt : (int, Int.int) Iso.iso
+ val isoInt : (int, Int.int) Iso.t
(**
* An isomorphism between integers of type {int} and the default
* integer type. It is always equivalent to {(toInt, fromInt)}. Note
* that one of the injection and projection parts may be partial.
*)
- val isoLarge : (int, LargeInt.int) Iso.iso
+ val isoLarge : (int, LargeInt.int) Iso.t
(**
* An isomorphism between integers of type {int} and integers of type
* {LargeInt.int}. It is always equivalent to {(toLarge, fromLarge)}.
Modified: mltonlib/trunk/com/ssh/extended-basis/unstable/public/iso.sig
===================================================================
--- mltonlib/trunk/com/ssh/extended-basis/unstable/public/iso.sig 2006-11-08 14:20:18 UTC (rev 4812)
+++ mltonlib/trunk/com/ssh/extended-basis/unstable/public/iso.sig 2006-11-12 15:34:03 UTC (rev 4813)
@@ -14,6 +14,11 @@
* functions.
*)
+ type ('a, 'b) t = ('a, 'b) iso
+ (**
+ * Convenience alias.
+ *)
+
val id : ('a, 'a) iso
(**
* The identity isomorphism. This is always equivalent to {(fn a => a,
Modified: mltonlib/trunk/com/ssh/extended-basis/unstable/public/mono-array.sig
===================================================================
--- mltonlib/trunk/com/ssh/extended-basis/unstable/public/mono-array.sig 2006-11-08 14:20:18 UTC (rev 4812)
+++ mltonlib/trunk/com/ssh/extended-basis/unstable/public/mono-array.sig 2006-11-12 15:34:03 UTC (rev 4813)
@@ -62,21 +62,21 @@
(** == Isomorphisms == *)
- val isoList : (array, elem list) Iso.iso
+ val isoList : (array, elem list) Iso.t
(**
* An isomorphism between arrays and lists. It is always equivalent to
* {(toList, fromList)}. Note that the isomorphism does not preserve
* identity.
*)
- val isoPoly : (array, elem Array.array) Iso.iso
+ val isoPoly : (array, elem Array.array) Iso.t
(**
* An isomorphism between monomorphic and polymorphic arrays. It is
* always equivalent to {(toPoly, fromPoly)}. Note that the
* isomorphism does not preserve identity.
*)
- val isoVector : (array, vector) Iso.iso
+ val isoVector : (array, vector) Iso.t
(**
* An isomorphism between arrays and vectors. It is always equivalent
* to {(toVector, fromVector)}. Note that the isomorphism does not
Modified: mltonlib/trunk/com/ssh/extended-basis/unstable/public/mono-vector.sig
===================================================================
--- mltonlib/trunk/com/ssh/extended-basis/unstable/public/mono-vector.sig 2006-11-08 14:20:18 UTC (rev 4812)
+++ mltonlib/trunk/com/ssh/extended-basis/unstable/public/mono-vector.sig 2006-11-12 15:34:03 UTC (rev 4813)
@@ -41,13 +41,13 @@
(** == Isomorphisms == *)
- val isoList : (vector, elem list) Iso.iso
+ val isoList : (vector, elem list) Iso.t
(**
* An isomorphism between vectors and lists. It is always equivalent
* to {(toList, fromList)}.
*)
- val isoPoly : (vector, elem Vector.vector) Iso.iso
+ val isoPoly : (vector, elem Vector.vector) Iso.t
(**
* An isomorphism between monomorphic and polymorphic vectors. It is
* always equivalent to {(toPoly, fromPoly)}.
Modified: mltonlib/trunk/com/ssh/extended-basis/unstable/public/real.sig
===================================================================
--- mltonlib/trunk/com/ssh/extended-basis/unstable/public/real.sig 2006-11-08 14:20:18 UTC (rev 4812)
+++ mltonlib/trunk/com/ssh/extended-basis/unstable/public/real.sig 2006-11-12 15:34:03 UTC (rev 4813)
@@ -17,13 +17,13 @@
(** == Embeddings == *)
- val embDecimal : (real, IEEEReal.decimal_approx) Emb.emb
+ val embDecimal : (real, IEEEReal.decimal_approx) Emb.t
(**
* An embedding of reals into decimal approximations. It is always
* equivalent to {(toDecimal, fromDecimal)}.
*)
- val embString : (real, string) Emb.emb
+ val embString : (real, string) Emb.t
(**
* An embedding of reals into strings. It is always equivalent to
* {(toString, fromString)}.
@@ -31,7 +31,7 @@
(** == Isomorphisms == *)
- val isoInt : IEEEReal.rounding_mode -> (real, Int.int) Iso.iso
+ val isoInt : IEEEReal.rounding_mode -> (real, Int.int) Iso.t
(**
* Returns an isomorphism between integers of type {Int.int} and reals
* given a rounding mode. Specifically, the result of {isoInt mode} is
@@ -39,7 +39,7 @@
* an isomorphism in the mathematical sense.
*)
- val isoLarge : IEEEReal.rounding_mode -> (real, LargeReal.real) Iso.iso
+ val isoLarge : IEEEReal.rounding_mode -> (real, LargeReal.real) Iso.t
(**
* Returns an isomorphism between reals of type {LargeReal.real} and
* reals of type {real} given a rounding mode. Specifically, the
@@ -48,7 +48,7 @@
* mathematical sense.
*)
- val isoLargeInt : IEEEReal.rounding_mode -> (real, LargeInt.int) Iso.iso
+ val isoLargeInt : IEEEReal.rounding_mode -> (real, LargeInt.int) Iso.t
(**
* Returns an isomorphism between integers of type {LargeInt.int} and
* reals given a rounding mode. Specifically, the result of
@@ -57,7 +57,7 @@
* mathematical sense.
*)
- val isoManExp : (real, {man : real, exp : int}) Iso.iso
+ val isoManExp : (real, {man : real, exp : int}) Iso.t
(**
* An isomorphism between reals and their representation as a mantissa
* and an exponent. It is always equivalent to {(toManExp,
Modified: mltonlib/trunk/com/ssh/extended-basis/unstable/public/string.sig
===================================================================
--- mltonlib/trunk/com/ssh/extended-basis/unstable/public/string.sig 2006-11-08 14:20:18 UTC (rev 4812)
+++ mltonlib/trunk/com/ssh/extended-basis/unstable/public/string.sig 2006-11-12 15:34:03 UTC (rev 4813)
@@ -17,13 +17,13 @@
(** == Embeddings == *)
- val embCString : (string, string) Emb.emb
+ val embCString : (string, string) Emb.t
(**
* An embedding of strings into C-style string literals. It is always
* equivalent to {(toCString, fromCString)}.
*)
- val embString : (string, string) Emb.emb
+ val embString : (string, string) Emb.t
(**
* An embedding of strings into SML-style string literals. It is
* always equivalent to {(toString, fromString)}.
@@ -31,7 +31,7 @@
(** == Isomorphisms == *)
- val isoList : (string, char list) Iso.iso
+ val isoList : (string, char list) Iso.t
(**
* An isomorphism between strings and lists. It is always equivalent
* to {(toList, fromList)}.
@@ -54,7 +54,7 @@
val foldri : (int * elem * 'a -> 'a) -> 'a -> vector -> 'a
val fromList : elem list -> vector
val fromPoly : elem Vector.vector -> vector
- val isoPoly : (vector, elem Vector.vector) Iso.iso
+ val isoPoly : (vector, elem Vector.vector) Iso.t
val length : vector -> int
val mapi : (int * elem -> elem) -> vector -> vector
val maxLen : int
Modified: mltonlib/trunk/com/ssh/extended-basis/unstable/public/vector.sig
===================================================================
--- mltonlib/trunk/com/ssh/extended-basis/unstable/public/vector.sig 2006-11-08 14:20:18 UTC (rev 4812)
+++ mltonlib/trunk/com/ssh/extended-basis/unstable/public/vector.sig 2006-11-12 15:34:03 UTC (rev 4813)
@@ -25,7 +25,7 @@
(** == Isomorphisms == *)
- val isoList : ('a vector, 'a list) Iso.iso
+ val isoList : ('a vector, 'a list) Iso.t
(**
* An isomorphism between vectors and lists. It is always equivalent
* to {(toList, fromList)}.
Modified: mltonlib/trunk/com/ssh/extended-basis/unstable/public/word.sig
===================================================================
--- mltonlib/trunk/com/ssh/extended-basis/unstable/public/word.sig 2006-11-08 14:20:18 UTC (rev 4812)
+++ mltonlib/trunk/com/ssh/extended-basis/unstable/public/word.sig 2006-11-12 15:34:03 UTC (rev 4813)
@@ -72,7 +72,7 @@
(** == Embeddings == *)
- val embString : (word, string) Emb.emb
+ val embString : (word, string) Emb.t
(**
* An embedding of words into strings. It is always equivalent to
* {(toString, fromString)}.
@@ -80,49 +80,49 @@
(** == Isomorphisms == *)
- val isoInt : (word, Int.int) Iso.iso
+ val isoInt : (word, Int.int) Iso.t
(**
* An isomorphism between words of type {word} and the default integer
* type. It is always equivalent to {(toInt, fromInt)}.
*)
- val isoIntX : (word, Int.int) Iso.iso
+ val isoIntX : (word, Int.int) Iso.t
(**
* An isomorphism between words of type {word} and the default integer
* type. It is always equivalent to {(toIntX, fromInt)}.
*)
- val isoLarge : (word, LargeWord.word) Iso.iso
+ val isoLarge : (word, LargeWord.word) Iso.t
(**
* An isomorphism between words of type {word} and the {LargeWord.word}
* type. It is always equivalent to {(toLarge, fromLarge)}.
*)
- val isoLargeInt : (word, LargeInt.int) Iso.iso
+ val isoLargeInt : (word, LargeInt.int) Iso.t
(**
* An isomorphism between words of type {word} and the {LargeInt.int}
* type. It is always equivalent to {(toLargeInt, fromLargeInt)}.
*)
- val isoLargeIntX : (word, LargeInt.int) Iso.iso
+ val isoLargeIntX : (word, LargeInt.int) Iso.t
(**
* An isomorphism between words of type {word} and the {LargeInt.int}
* type. It is always equivalent to {(toLargeIntX, fromLargeInt)}.
*)
- val isoLargeX : (word, LargeWord.word) Iso.iso
+ val isoLargeX : (word, LargeWord.word) Iso.t
(**
* An isomorphism between words of type {word} and the {LargeWord.word}
* type. It is always equivalent to {(toLargeX, fromLarge)}.
*)
- val isoWord : (word, Word.word) Iso.iso
+ val isoWord : (word, Word.word) Iso.t
(**
* An isomorphism between words of type {word} and the default word
* type. It is always equivalent to {(toWord, fromWord)}.
*)
- val isoWordX : (word, Word.word) Iso.iso
+ val isoWordX : (word, Word.word) Iso.t
(**
* An isomorphism between words of type {word} and the default word
* type. It is always equivalent to {(toWordX, fromWordX)}.
|
|
From: Vesa K. <ve...@ml...> - 2006-11-08 06:20:33
|
Added convenience alias type t for the (more or less abstract) type
defined by each structure.
----------------------------------------------------------------------
U mltonlib/trunk/com/ssh/extended-basis/unstable/detail/array.sml
A mltonlib/trunk/com/ssh/extended-basis/unstable/detail/bool.sml
U mltonlib/trunk/com/ssh/extended-basis/unstable/detail/list.sml
U mltonlib/trunk/com/ssh/extended-basis/unstable/detail/mk-integer-ext.fun
U mltonlib/trunk/com/ssh/extended-basis/unstable/detail/mk-mono-array-ext.fun
U mltonlib/trunk/com/ssh/extended-basis/unstable/detail/mk-mono-vector-ext.fun
U mltonlib/trunk/com/ssh/extended-basis/unstable/detail/mk-real-ext.fun
U mltonlib/trunk/com/ssh/extended-basis/unstable/detail/mk-text-ext.fun
U mltonlib/trunk/com/ssh/extended-basis/unstable/detail/mk-word-ext.fun
A mltonlib/trunk/com/ssh/extended-basis/unstable/detail/option.sml
U mltonlib/trunk/com/ssh/extended-basis/unstable/detail/smlnj/unsealed.cm
U mltonlib/trunk/com/ssh/extended-basis/unstable/detail/vector.sml
U mltonlib/trunk/com/ssh/extended-basis/unstable/extensions.mlb
U mltonlib/trunk/com/ssh/extended-basis/unstable/extensions.use
U mltonlib/trunk/com/ssh/extended-basis/unstable/public/array.sig
A mltonlib/trunk/com/ssh/extended-basis/unstable/public/bool.sig
U mltonlib/trunk/com/ssh/extended-basis/unstable/public/char.sig
U mltonlib/trunk/com/ssh/extended-basis/unstable/public/export.sml
U mltonlib/trunk/com/ssh/extended-basis/unstable/public/int-inf.sig
U mltonlib/trunk/com/ssh/extended-basis/unstable/public/integer.sig
U mltonlib/trunk/com/ssh/extended-basis/unstable/public/list.sig
U mltonlib/trunk/com/ssh/extended-basis/unstable/public/mono-array.sig
U mltonlib/trunk/com/ssh/extended-basis/unstable/public/mono-vector.sig
A mltonlib/trunk/com/ssh/extended-basis/unstable/public/option.sig
U mltonlib/trunk/com/ssh/extended-basis/unstable/public/real.sig
U mltonlib/trunk/com/ssh/extended-basis/unstable/public/string.sig
U mltonlib/trunk/com/ssh/extended-basis/unstable/public/substring.sig
U mltonlib/trunk/com/ssh/extended-basis/unstable/public/vector.sig
U mltonlib/trunk/com/ssh/extended-basis/unstable/public/word.sig
----------------------------------------------------------------------
Modified: mltonlib/trunk/com/ssh/extended-basis/unstable/detail/array.sml
===================================================================
--- mltonlib/trunk/com/ssh/extended-basis/unstable/detail/array.sml 2006-11-07 03:45:26 UTC (rev 4811)
+++ mltonlib/trunk/com/ssh/extended-basis/unstable/detail/array.sml 2006-11-08 14:20:18 UTC (rev 4812)
@@ -9,6 +9,7 @@
*)
structure Array : ARRAY = struct
open Array
+ type 'a t = 'a array
fun toList a = foldr op :: [] a
val isoList = (toList, fromList)
val toVector = vector
Added: mltonlib/trunk/com/ssh/extended-basis/unstable/detail/bool.sml
===================================================================
--- mltonlib/trunk/com/ssh/extended-basis/unstable/detail/bool.sml 2006-11-07 03:45:26 UTC (rev 4811)
+++ mltonlib/trunk/com/ssh/extended-basis/unstable/detail/bool.sml 2006-11-08 14:20:18 UTC (rev 4812)
@@ -0,0 +1,13 @@
+(* Copyright (C) 2006 SSH Communications Security, Helsinki, Finland
+ *
+ * MLton is released under a BSD-style license.
+ * See the file MLton-LICENSE for details.
+ *)
+
+(**
+ * Extended {Bool : BOOL} structure.
+ *)
+structure Bool : BOOL = struct
+ open Bool
+ type t = bool
+end
Property changes on: mltonlib/trunk/com/ssh/extended-basis/unstable/detail/bool.sml
___________________________________________________________________
Name: svn:eol-style
+ native
Modified: mltonlib/trunk/com/ssh/extended-basis/unstable/detail/list.sml
===================================================================
--- mltonlib/trunk/com/ssh/extended-basis/unstable/detail/list.sml 2006-11-07 03:45:26 UTC (rev 4811)
+++ mltonlib/trunk/com/ssh/extended-basis/unstable/detail/list.sml 2006-11-08 14:20:18 UTC (rev 4812)
@@ -9,5 +9,6 @@
*)
structure List : LIST = struct
open List
+ type 'a t = 'a list
val sub = nth
end
Modified: mltonlib/trunk/com/ssh/extended-basis/unstable/detail/mk-integer-ext.fun
===================================================================
--- mltonlib/trunk/com/ssh/extended-basis/unstable/detail/mk-integer-ext.fun 2006-11-07 03:45:26 UTC (rev 4811)
+++ mltonlib/trunk/com/ssh/extended-basis/unstable/detail/mk-integer-ext.fun 2006-11-08 14:20:18 UTC (rev 4812)
@@ -9,6 +9,7 @@
*)
functor MkIntegerExt (I : INTEGER) = struct
open I
+ type t = int
val embString = (toString, fromString)
val isoInt = (toInt, fromInt)
val isoLarge = (toLarge, fromLarge)
Modified: mltonlib/trunk/com/ssh/extended-basis/unstable/detail/mk-mono-array-ext.fun
===================================================================
--- mltonlib/trunk/com/ssh/extended-basis/unstable/detail/mk-mono-array-ext.fun 2006-11-07 03:45:26 UTC (rev 4811)
+++ mltonlib/trunk/com/ssh/extended-basis/unstable/detail/mk-mono-array-ext.fun 2006-11-08 14:20:18 UTC (rev 4812)
@@ -12,6 +12,7 @@
where type elem = MonoVector.elem
where type vector = MonoVector.vector) = struct
open MonoArray
+ type t = array
fun toList a = foldr op :: [] a
val isoList = (toList, fromList)
val toVector = vector
Modified: mltonlib/trunk/com/ssh/extended-basis/unstable/detail/mk-mono-vector-ext.fun
===================================================================
--- mltonlib/trunk/com/ssh/extended-basis/unstable/detail/mk-mono-vector-ext.fun 2006-11-07 03:45:26 UTC (rev 4811)
+++ mltonlib/trunk/com/ssh/extended-basis/unstable/detail/mk-mono-vector-ext.fun 2006-11-08 14:20:18 UTC (rev 4812)
@@ -9,6 +9,7 @@
*)
functor MkMonoVectorExt (M : MONO_VECTOR) = struct
open M
+ type t = vector
fun toList v = foldr op :: [] v
val isoList = (toList, fromList)
(* XXX It would be nice to avoid copying in toPoly and fromPoly *)
Modified: mltonlib/trunk/com/ssh/extended-basis/unstable/detail/mk-real-ext.fun
===================================================================
--- mltonlib/trunk/com/ssh/extended-basis/unstable/detail/mk-real-ext.fun 2006-11-07 03:45:26 UTC (rev 4811)
+++ mltonlib/trunk/com/ssh/extended-basis/unstable/detail/mk-real-ext.fun 2006-11-08 14:20:18 UTC (rev 4812)
@@ -9,6 +9,7 @@
*)
functor MkRealExt (R : REAL) = struct
open R
+ type t = real
val embDecimal = (toDecimal, fromDecimal)
val embString = (toString, fromString)
fun isoInt mode = (toInt mode, fromInt)
Modified: mltonlib/trunk/com/ssh/extended-basis/unstable/detail/mk-text-ext.fun
===================================================================
--- mltonlib/trunk/com/ssh/extended-basis/unstable/detail/mk-text-ext.fun 2006-11-07 03:45:26 UTC (rev 4811)
+++ mltonlib/trunk/com/ssh/extended-basis/unstable/detail/mk-text-ext.fun 2006-11-08 14:20:18 UTC (rev 4812)
@@ -12,6 +12,7 @@
structure Char = struct
open Char
+ type t = char
val minOrd = 0
val boundsChar = (minChar, maxChar)
val boundsOrd = (minOrd, maxOrd)
@@ -25,6 +26,7 @@
structure String = struct
open CharVector String
+ type t = string
val embCString = (toCString, fromCString)
val embString = (toString, fromString)
val isoList = (explode, implode)
@@ -32,6 +34,7 @@
structure Substring = struct
open Substring
+ type t = substring
val length = size
end
end
Modified: mltonlib/trunk/com/ssh/extended-basis/unstable/detail/mk-word-ext.fun
===================================================================
--- mltonlib/trunk/com/ssh/extended-basis/unstable/detail/mk-word-ext.fun 2006-11-07 03:45:26 UTC (rev 4811)
+++ mltonlib/trunk/com/ssh/extended-basis/unstable/detail/mk-word-ext.fun 2006-11-08 14:20:18 UTC (rev 4812)
@@ -9,6 +9,7 @@
*)
functor MkWordExt (W : WORD) = struct
open W
+ type t = word
val bounds as (minWord, maxWord) = (fromInt 0, fromInt~1)
val fromWord = fromLarge o Word.toLarge
val fromWordX = fromLarge o Word.toLargeX
Added: mltonlib/trunk/com/ssh/extended-basis/unstable/detail/option.sml
===================================================================
--- mltonlib/trunk/com/ssh/extended-basis/unstable/detail/option.sml 2006-11-07 03:45:26 UTC (rev 4811)
+++ mltonlib/trunk/com/ssh/extended-basis/unstable/detail/option.sml 2006-11-08 14:20:18 UTC (rev 4812)
@@ -0,0 +1,13 @@
+(* Copyright (C) 2006 SSH Communications Security, Helsinki, Finland
+ *
+ * MLton is released under a BSD-style license.
+ * See the file MLton-LICENSE for details.
+ *)
+
+(**
+ * Extended {Option : OPTION} structure.
+ *)
+structure Option : OPTION = struct
+ open Option
+ type 'a t = 'a option
+end
Property changes on: mltonlib/trunk/com/ssh/extended-basis/unstable/detail/option.sml
___________________________________________________________________
Name: svn:eol-style
+ native
Modified: mltonlib/trunk/com/ssh/extended-basis/unstable/detail/smlnj/unsealed.cm
===================================================================
--- mltonlib/trunk/com/ssh/extended-basis/unstable/detail/smlnj/unsealed.cm 2006-11-07 03:45:26 UTC (rev 4811)
+++ mltonlib/trunk/com/ssh/extended-basis/unstable/detail/smlnj/unsealed.cm 2006-11-08 14:20:18 UTC (rev 4812)
@@ -6,6 +6,7 @@
group is
../../public/array.sig
+ ../../public/bool.sig
../../public/char.sig
../../public/emb.sig
../../public/int-inf.sig
@@ -14,6 +15,7 @@
../../public/list.sig
../../public/mono-array.sig
../../public/mono-vector.sig
+ ../../public/option.sig
../../public/real.sig
../../public/string.sig
../../public/substring.sig
@@ -21,10 +23,12 @@
../../public/vector.sig
../../public/word.sig
../array.sml
+ ../bool.sml
../common.sml
../emb.sml
../iso.sml
../list.sml
+ ../option.sml
../smlnj/ints.sml
../smlnj/mono-arrays.sml
../smlnj/mono-vectors.sml
Modified: mltonlib/trunk/com/ssh/extended-basis/unstable/detail/vector.sml
===================================================================
--- mltonlib/trunk/com/ssh/extended-basis/unstable/detail/vector.sml 2006-11-07 03:45:26 UTC (rev 4811)
+++ mltonlib/trunk/com/ssh/extended-basis/unstable/detail/vector.sml 2006-11-08 14:20:18 UTC (rev 4812)
@@ -9,6 +9,7 @@
*)
structure Vector : VECTOR = struct
open Vector
+ type 'a t = 'a vector
fun toList v = foldr op :: [] v
val isoList = (toList, fromList)
end
Modified: mltonlib/trunk/com/ssh/extended-basis/unstable/extensions.mlb
===================================================================
--- mltonlib/trunk/com/ssh/extended-basis/unstable/extensions.mlb 2006-11-07 03:45:26 UTC (rev 4811)
+++ mltonlib/trunk/com/ssh/extended-basis/unstable/extensions.mlb 2006-11-08 14:20:18 UTC (rev 4812)
@@ -50,6 +50,8 @@
detail/mk-text-ext.fun
(* Extended signatures *)
+ public/bool.sig
+ public/option.sig
public/int-inf.sig
public/integer.sig
public/real.sig
@@ -65,6 +67,8 @@
public/text.sig
(* Extended modules *)
+ detail/bool.sml
+ detail/option.sml
detail/list.sml
detail/vector.sml
detail/array.sml
Modified: mltonlib/trunk/com/ssh/extended-basis/unstable/extensions.use
===================================================================
--- mltonlib/trunk/com/ssh/extended-basis/unstable/extensions.use 2006-11-07 03:45:26 UTC (rev 4811)
+++ mltonlib/trunk/com/ssh/extended-basis/unstable/extensions.use 2006-11-08 14:20:18 UTC (rev 4812)
@@ -33,6 +33,8 @@
"detail/mk-text-ext.fun",
(* Extended signatures *)
+ "public/bool.sig",
+ "public/option.sig",
"public/int-inf.sig",
"public/integer.sig",
"public/real.sig",
@@ -48,6 +50,8 @@
"public/text.sig",
(* Extended modules *)
+ "detail/bool.sml",
+ "detail/option.sml",
"detail/list.sml",
"detail/vector.sml",
"detail/array.sml",
Modified: mltonlib/trunk/com/ssh/extended-basis/unstable/public/array.sig
===================================================================
--- mltonlib/trunk/com/ssh/extended-basis/unstable/public/array.sig 2006-11-07 03:45:26 UTC (rev 4811)
+++ mltonlib/trunk/com/ssh/extended-basis/unstable/public/array.sig 2006-11-08 14:20:18 UTC (rev 4812)
@@ -10,6 +10,11 @@
signature ARRAY = sig
include ARRAY
+ type 'a t = 'a array
+ (**
+ * Convenience alias.
+ *)
+
(** == Conversions == *)
val fromVector : 'a vector -> 'a array
Added: mltonlib/trunk/com/ssh/extended-basis/unstable/public/bool.sig
===================================================================
--- mltonlib/trunk/com/ssh/extended-basis/unstable/public/bool.sig 2006-11-07 03:45:26 UTC (rev 4811)
+++ mltonlib/trunk/com/ssh/extended-basis/unstable/public/bool.sig 2006-11-08 14:20:18 UTC (rev 4812)
@@ -0,0 +1,17 @@
+(* Copyright (C) 2006 SSH Communications Security, Helsinki, Finland
+ *
+ * MLton is released under a BSD-style license.
+ * See the file MLton-LICENSE for details.
+ *)
+
+(**
+ * Extended {BOOL} signature.
+ *)
+signature BOOL = sig
+ include BOOL
+
+ type t = bool
+ (**
+ * Convenience alias.
+ *)
+end
Property changes on: mltonlib/trunk/com/ssh/extended-basis/unstable/public/bool.sig
___________________________________________________________________
Name: svn:eol-style
+ native
Modified: mltonlib/trunk/com/ssh/extended-basis/unstable/public/char.sig
===================================================================
--- mltonlib/trunk/com/ssh/extended-basis/unstable/public/char.sig 2006-11-07 03:45:26 UTC (rev 4811)
+++ mltonlib/trunk/com/ssh/extended-basis/unstable/public/char.sig 2006-11-08 14:20:18 UTC (rev 4812)
@@ -10,6 +10,11 @@
signature CHAR = sig
include CHAR
+ type t = char
+ (**
+ * Convenience alias.
+ *)
+
(** == Bounds == *)
val minOrd : Int.int
Modified: mltonlib/trunk/com/ssh/extended-basis/unstable/public/export.sml
===================================================================
--- mltonlib/trunk/com/ssh/extended-basis/unstable/public/export.sml 2006-11-07 03:45:26 UTC (rev 4811)
+++ mltonlib/trunk/com/ssh/extended-basis/unstable/public/export.sml 2006-11-08 14:20:18 UTC (rev 4812)
@@ -10,6 +10,7 @@
type ('a, 'b) iso = ('a, 'b) Iso.iso
signature ARRAY = ARRAY
+signature BOOL = BOOL
signature CHAR = CHAR
signature EMB = EMB
signature INTEGER = INTEGER
@@ -18,6 +19,7 @@
signature LIST = LIST
signature MONO_ARRAY = MONO_ARRAY
signature MONO_VECTOR = MONO_VECTOR
+signature OPTION = OPTION
signature REAL = REAL
signature STRING = STRING
signature SUBSTRING = SUBSTRING
@@ -26,6 +28,7 @@
signature WORD = WORD
structure Array : ARRAY = Array
+structure Bool : BOOL = Bool
structure Char : CHAR = Char
structure CharArray : MONO_ARRAY = CharArray
structure CharVector : MONO_VECTOR = CharVector
@@ -36,6 +39,7 @@
structure LargeReal : REAL = LargeReal
structure LargeWord : WORD = LargeWord
structure List : LIST = List
+structure Option : OPTION = Option
structure Position : INTEGER = Position
structure Real : REAL = Real
structure String : STRING = String
Modified: mltonlib/trunk/com/ssh/extended-basis/unstable/public/int-inf.sig
===================================================================
--- mltonlib/trunk/com/ssh/extended-basis/unstable/public/int-inf.sig 2006-11-07 03:45:26 UTC (rev 4811)
+++ mltonlib/trunk/com/ssh/extended-basis/unstable/public/int-inf.sig 2006-11-08 14:20:18 UTC (rev 4812)
@@ -10,6 +10,11 @@
signature INT_INF = sig
include INT_INF
+ type t = int
+ (**
+ * Convenience alias.
+ *)
+
(** == Bounds == *)
val bounds : (int * int) option
Modified: mltonlib/trunk/com/ssh/extended-basis/unstable/public/integer.sig
===================================================================
--- mltonlib/trunk/com/ssh/extended-basis/unstable/public/integer.sig 2006-11-07 03:45:26 UTC (rev 4811)
+++ mltonlib/trunk/com/ssh/extended-basis/unstable/public/integer.sig 2006-11-08 14:20:18 UTC (rev 4812)
@@ -10,6 +10,11 @@
signature INTEGER = sig
include INTEGER
+ type t = int
+ (**
+ * Convenience alias.
+ *)
+
(** == Bounds == *)
val bounds : (int * int) option
Modified: mltonlib/trunk/com/ssh/extended-basis/unstable/public/list.sig
===================================================================
--- mltonlib/trunk/com/ssh/extended-basis/unstable/public/list.sig 2006-11-07 03:45:26 UTC (rev 4811)
+++ mltonlib/trunk/com/ssh/extended-basis/unstable/public/list.sig 2006-11-08 14:20:18 UTC (rev 4812)
@@ -10,6 +10,11 @@
signature LIST = sig
include LIST
+ type 'a t = 'a list
+ (**
+ * Convenience alias.
+ *)
+
val sub : 'a list * int -> 'a
(**
* {sub (l, i)} returns the {i}th element of the list {l}. This is
Modified: mltonlib/trunk/com/ssh/extended-basis/unstable/public/mono-array.sig
===================================================================
--- mltonlib/trunk/com/ssh/extended-basis/unstable/public/mono-array.sig 2006-11-07 03:45:26 UTC (rev 4811)
+++ mltonlib/trunk/com/ssh/extended-basis/unstable/public/mono-array.sig 2006-11-08 14:20:18 UTC (rev 4812)
@@ -10,6 +10,11 @@
signature MONO_ARRAY = sig
include MONO_ARRAY
+ type t = array
+ (**
+ * Convenience alias.
+ *)
+
(** == Conversions == *)
val fromPoly : elem Array.array -> array
Modified: mltonlib/trunk/com/ssh/extended-basis/unstable/public/mono-vector.sig
===================================================================
--- mltonlib/trunk/com/ssh/extended-basis/unstable/public/mono-vector.sig 2006-11-07 03:45:26 UTC (rev 4811)
+++ mltonlib/trunk/com/ssh/extended-basis/unstable/public/mono-vector.sig 2006-11-08 14:20:18 UTC (rev 4812)
@@ -10,6 +10,11 @@
signature MONO_VECTOR = sig
include MONO_VECTOR
+ type t = vector
+ (**
+ * Convenience alias.
+ *)
+
(** == Conversions == *)
val fromPoly : elem Vector.vector -> vector
Added: mltonlib/trunk/com/ssh/extended-basis/unstable/public/option.sig
===================================================================
--- mltonlib/trunk/com/ssh/extended-basis/unstable/public/option.sig 2006-11-07 03:45:26 UTC (rev 4811)
+++ mltonlib/trunk/com/ssh/extended-basis/unstable/public/option.sig 2006-11-08 14:20:18 UTC (rev 4812)
@@ -0,0 +1,17 @@
+(* Copyright (C) 2006 SSH Communications Security, Helsinki, Finland
+ *
+ * MLton is released under a BSD-style license.
+ * See the file MLton-LICENSE for details.
+ *)
+
+(**
+ * Extended {OPTION} signature.
+ *)
+signature OPTION = sig
+ include OPTION
+
+ type 'a t = 'a option
+ (**
+ * Convenience alias.
+ *)
+end
Property changes on: mltonlib/trunk/com/ssh/extended-basis/unstable/public/option.sig
___________________________________________________________________
Name: svn:eol-style
+ native
Modified: mltonlib/trunk/com/ssh/extended-basis/unstable/public/real.sig
===================================================================
--- mltonlib/trunk/com/ssh/extended-basis/unstable/public/real.sig 2006-11-07 03:45:26 UTC (rev 4811)
+++ mltonlib/trunk/com/ssh/extended-basis/unstable/public/real.sig 2006-11-08 14:20:18 UTC (rev 4812)
@@ -10,6 +10,11 @@
signature REAL = sig
include REAL
+ type t = real
+ (**
+ * Convenience alias.
+ *)
+
(** == Embeddings == *)
val embDecimal : (real, IEEEReal.decimal_approx) Emb.emb
Modified: mltonlib/trunk/com/ssh/extended-basis/unstable/public/string.sig
===================================================================
--- mltonlib/trunk/com/ssh/extended-basis/unstable/public/string.sig 2006-11-07 03:45:26 UTC (rev 4811)
+++ mltonlib/trunk/com/ssh/extended-basis/unstable/public/string.sig 2006-11-08 14:20:18 UTC (rev 4812)
@@ -10,6 +10,11 @@
signature STRING = sig
include STRING
+ type t = string
+ (**
+ * Convenience alias.
+ *)
+
(** == Embeddings == *)
val embCString : (string, string) Emb.emb
Modified: mltonlib/trunk/com/ssh/extended-basis/unstable/public/substring.sig
===================================================================
--- mltonlib/trunk/com/ssh/extended-basis/unstable/public/substring.sig 2006-11-07 03:45:26 UTC (rev 4811)
+++ mltonlib/trunk/com/ssh/extended-basis/unstable/public/substring.sig 2006-11-08 14:20:18 UTC (rev 4812)
@@ -10,6 +10,11 @@
signature SUBSTRING = sig
include SUBSTRING
+ type t = substring
+ (**
+ * Convenience alias.
+ *)
+
val length : substring -> int
(**
* Returns the size of the given substring. This is equivalent to
Modified: mltonlib/trunk/com/ssh/extended-basis/unstable/public/vector.sig
===================================================================
--- mltonlib/trunk/com/ssh/extended-basis/unstable/public/vector.sig 2006-11-07 03:45:26 UTC (rev 4811)
+++ mltonlib/trunk/com/ssh/extended-basis/unstable/public/vector.sig 2006-11-08 14:20:18 UTC (rev 4812)
@@ -10,6 +10,11 @@
signature VECTOR = sig
include VECTOR
+ type 'a t = 'a vector
+ (**
+ * Convenience alias.
+ *)
+
(** == Conversions == *)
val toList : 'a vector -> 'a list
Modified: mltonlib/trunk/com/ssh/extended-basis/unstable/public/word.sig
===================================================================
--- mltonlib/trunk/com/ssh/extended-basis/unstable/public/word.sig 2006-11-07 03:45:26 UTC (rev 4811)
+++ mltonlib/trunk/com/ssh/extended-basis/unstable/public/word.sig 2006-11-08 14:20:18 UTC (rev 4812)
@@ -10,6 +10,11 @@
signature WORD = sig
include WORD
+ type t = word
+ (**
+ * Convenience alias.
+ *)
+
(** == Bounds == *)
val maxWord : word
|
|
From: Matthew F. <fl...@ml...> - 2006-11-06 19:48:00
|
Merge trunk revisions 4663:4810 into x86_64 branch
----------------------------------------------------------------------
U mlton/branches/on-20050822-x86_64-branch/Makefile
U mlton/branches/on-20050822-x86_64-branch/basis-library/arrays-and-vectors/mono-vector.sig
U mlton/branches/on-20050822-x86_64-branch/basis-library/real/real.sml
U mlton/branches/on-20050822-x86_64-branch/bin/make-pdf-guide
U mlton/branches/on-20050822-x86_64-branch/doc/changelog
U mlton/branches/on-20050822-x86_64-branch/doc/guide/AST
U mlton/branches/on-20050822-x86_64-branch/doc/guide/AccessControl
U mlton/branches/on-20050822-x86_64-branch/doc/guide/AdmitsEquality
U mlton/branches/on-20050822-x86_64-branch/doc/guide/Alice
U mlton/branches/on-20050822-x86_64-branch/doc/guide/AllocateRegisters
U mlton/branches/on-20050822-x86_64-branch/doc/guide/AndreiFormiga
A mlton/branches/on-20050822-x86_64-branch/doc/guide/ArrayLiteral
U mlton/branches/on-20050822-x86_64-branch/doc/guide/BasisLibrary
U mlton/branches/on-20050822-x86_64-branch/doc/guide/Bug
U mlton/branches/on-20050822-x86_64-branch/doc/guide/Bugs20041109
A mlton/branches/on-20050822-x86_64-branch/doc/guide/Bugs20051202
U mlton/branches/on-20050822-x86_64-branch/doc/guide/CKitLibrary
A mlton/branches/on-20050822-x86_64-branch/doc/guide/CMinusMinus
U mlton/branches/on-20050822-x86_64-branch/doc/guide/CallGraph
U mlton/branches/on-20050822-x86_64-branch/doc/guide/CallingFromCToSML
U mlton/branches/on-20050822-x86_64-branch/doc/guide/CallingFromSMLToC
U mlton/branches/on-20050822-x86_64-branch/doc/guide/CallingFromSMLToCFunctionPointer
U mlton/branches/on-20050822-x86_64-branch/doc/guide/ChrisClearwater
U mlton/branches/on-20050822-x86_64-branch/doc/guide/Chunkify
U mlton/branches/on-20050822-x86_64-branch/doc/guide/Closure
U mlton/branches/on-20050822-x86_64-branch/doc/guide/ClosureConvert
U mlton/branches/on-20050822-x86_64-branch/doc/guide/CommonArg
U mlton/branches/on-20050822-x86_64-branch/doc/guide/CommonBlock
U mlton/branches/on-20050822-x86_64-branch/doc/guide/CommonSubexp
U mlton/branches/on-20050822-x86_64-branch/doc/guide/CompilationManager
U mlton/branches/on-20050822-x86_64-branch/doc/guide/CompileTimeOptions
U mlton/branches/on-20050822-x86_64-branch/doc/guide/CompilerOverview
U mlton/branches/on-20050822-x86_64-branch/doc/guide/CompilerPassTemplate
A mlton/branches/on-20050822-x86_64-branch/doc/guide/CompilingWithSMLNJ
U mlton/branches/on-20050822-x86_64-branch/doc/guide/ConcurrentML
U mlton/branches/on-20050822-x86_64-branch/doc/guide/ConcurrentMLImplementation
U mlton/branches/on-20050822-x86_64-branch/doc/guide/ConstantPropagation
U mlton/branches/on-20050822-x86_64-branch/doc/guide/Contact
U mlton/branches/on-20050822-x86_64-branch/doc/guide/Contify
U mlton/branches/on-20050822-x86_64-branch/doc/guide/CoreML
U mlton/branches/on-20050822-x86_64-branch/doc/guide/CoreMLSimplify
U mlton/branches/on-20050822-x86_64-branch/doc/guide/CreatingPages
U mlton/branches/on-20050822-x86_64-branch/doc/guide/Credits
U mlton/branches/on-20050822-x86_64-branch/doc/guide/CrossCompiling
U mlton/branches/on-20050822-x86_64-branch/doc/guide/DeadCode
U mlton/branches/on-20050822-x86_64-branch/doc/guide/DeepFlatten
U mlton/branches/on-20050822-x86_64-branch/doc/guide/DefineTypeBeforeUse
U mlton/branches/on-20050822-x86_64-branch/doc/guide/DefinitionOfStandardML
U mlton/branches/on-20050822-x86_64-branch/doc/guide/Defunctorize
U mlton/branches/on-20050822-x86_64-branch/doc/guide/Developers
U mlton/branches/on-20050822-x86_64-branch/doc/guide/Development
U mlton/branches/on-20050822-x86_64-branch/doc/guide/Documentation
U mlton/branches/on-20050822-x86_64-branch/doc/guide/Drawbacks
U mlton/branches/on-20050822-x86_64-branch/doc/guide/Eclipse
U mlton/branches/on-20050822-x86_64-branch/doc/guide/EditingPages
U mlton/branches/on-20050822-x86_64-branch/doc/guide/Elaborate
U mlton/branches/on-20050822-x86_64-branch/doc/guide/Emacs
U mlton/branches/on-20050822-x86_64-branch/doc/guide/Enscript
U mlton/branches/on-20050822-x86_64-branch/doc/guide/EqualityType
U mlton/branches/on-20050822-x86_64-branch/doc/guide/EqualityTypeVariable
A mlton/branches/on-20050822-x86_64-branch/doc/guide/EtaExpansion
U mlton/branches/on-20050822-x86_64-branch/doc/guide/Experimental
U mlton/branches/on-20050822-x86_64-branch/doc/guide/FAQ
U mlton/branches/on-20050822-x86_64-branch/doc/guide/Features
U mlton/branches/on-20050822-x86_64-branch/doc/guide/FirstClassPolymorphism
A mlton/branches/on-20050822-x86_64-branch/doc/guide/Fixpoints
U mlton/branches/on-20050822-x86_64-branch/doc/guide/Flatten
A mlton/branches/on-20050822-x86_64-branch/doc/guide/Fold
A mlton/branches/on-20050822-x86_64-branch/doc/guide/Fold01N
U mlton/branches/on-20050822-x86_64-branch/doc/guide/ForLoops
U mlton/branches/on-20050822-x86_64-branch/doc/guide/ForeignFunctionInterface
U mlton/branches/on-20050822-x86_64-branch/doc/guide/ForeignFunctionInterfaceSyntax
U mlton/branches/on-20050822-x86_64-branch/doc/guide/ForeignFunctionInterfaceTypes
U mlton/branches/on-20050822-x86_64-branch/doc/guide/FrontEnd
U mlton/branches/on-20050822-x86_64-branch/doc/guide/FunctionalRecordUpdate
U mlton/branches/on-20050822-x86_64-branch/doc/guide/GarbageCollection
U mlton/branches/on-20050822-x86_64-branch/doc/guide/GenerativeDatatype
U mlton/branches/on-20050822-x86_64-branch/doc/guide/GenerativeException
U mlton/branches/on-20050822-x86_64-branch/doc/guide/Glade
U mlton/branches/on-20050822-x86_64-branch/doc/guide/Globalize
U mlton/branches/on-20050822-x86_64-branch/doc/guide/GnuMP
U mlton/branches/on-20050822-x86_64-branch/doc/guide/HaMLet
U mlton/branches/on-20050822-x86_64-branch/doc/guide/HenryCejtin
U mlton/branches/on-20050822-x86_64-branch/doc/guide/History
U mlton/branches/on-20050822-x86_64-branch/doc/guide/Home
U mlton/branches/on-20050822-x86_64-branch/doc/guide/HowProfilingWorks
U mlton/branches/on-20050822-x86_64-branch/doc/guide/Identifier
U mlton/branches/on-20050822-x86_64-branch/doc/guide/Immutable
U mlton/branches/on-20050822-x86_64-branch/doc/guide/ImperativeTypeVariable
U mlton/branches/on-20050822-x86_64-branch/doc/guide/ImplementExceptions
U mlton/branches/on-20050822-x86_64-branch/doc/guide/ImplementHandlers
U mlton/branches/on-20050822-x86_64-branch/doc/guide/ImplementProfiling
U mlton/branches/on-20050822-x86_64-branch/doc/guide/ImplementSuffix
U mlton/branches/on-20050822-x86_64-branch/doc/guide/Index
U mlton/branches/on-20050822-x86_64-branch/doc/guide/InfixingOperators
U mlton/branches/on-20050822-x86_64-branch/doc/guide/Inline
U mlton/branches/on-20050822-x86_64-branch/doc/guide/InsertLimitChecks
U mlton/branches/on-20050822-x86_64-branch/doc/guide/InsertSignalChecks
U mlton/branches/on-20050822-x86_64-branch/doc/guide/Installation
U mlton/branches/on-20050822-x86_64-branch/doc/guide/IntermediateLanguage
U mlton/branches/on-20050822-x86_64-branch/doc/guide/IntroduceLoops
U mlton/branches/on-20050822-x86_64-branch/doc/guide/JesperLouisAndersen
U mlton/branches/on-20050822-x86_64-branch/doc/guide/JohnnyAndersen
U mlton/branches/on-20050822-x86_64-branch/doc/guide/KnownCase
A mlton/branches/on-20050822-x86_64-branch/doc/guide/LLVM
A mlton/branches/on-20050822-x86_64-branch/doc/guide/LambdaCalculus
U mlton/branches/on-20050822-x86_64-branch/doc/guide/LambdaFree
U mlton/branches/on-20050822-x86_64-branch/doc/guide/LanguageChanges
U mlton/branches/on-20050822-x86_64-branch/doc/guide/Lazy
U mlton/branches/on-20050822-x86_64-branch/doc/guide/Libraries
U mlton/branches/on-20050822-x86_64-branch/doc/guide/License
U mlton/branches/on-20050822-x86_64-branch/doc/guide/LineDirective
U mlton/branches/on-20050822-x86_64-branch/doc/guide/LocalFlatten
U mlton/branches/on-20050822-x86_64-branch/doc/guide/LocalRef
U mlton/branches/on-20050822-x86_64-branch/doc/guide/LoopInvariant
U mlton/branches/on-20050822-x86_64-branch/doc/guide/ML
U mlton/branches/on-20050822-x86_64-branch/doc/guide/MLBasis
U mlton/branches/on-20050822-x86_64-branch/doc/guide/MLBasisAnnotationExamples
U mlton/branches/on-20050822-x86_64-branch/doc/guide/MLBasisAnnotations
U mlton/branches/on-20050822-x86_64-branch/doc/guide/MLBasisAvailableLibraries
U mlton/branches/on-20050822-x86_64-branch/doc/guide/MLBasisExamples
U mlton/branches/on-20050822-x86_64-branch/doc/guide/MLBasisPathMap
U mlton/branches/on-20050822-x86_64-branch/doc/guide/MLBasisSyntaxAndSemantics
U mlton/branches/on-20050822-x86_64-branch/doc/guide/MLKit
U mlton/branches/on-20050822-x86_64-branch/doc/guide/MLNLFFI
U mlton/branches/on-20050822-x86_64-branch/doc/guide/MLNLFFIImplementation
A mlton/branches/on-20050822-x86_64-branch/doc/guide/MLRISCLibrary
U mlton/branches/on-20050822-x86_64-branch/doc/guide/MLj
A mlton/branches/on-20050822-x86_64-branch/doc/guide/MLmon
U mlton/branches/on-20050822-x86_64-branch/doc/guide/MLtonArray
U mlton/branches/on-20050822-x86_64-branch/doc/guide/MLtonBinIO
U mlton/branches/on-20050822-x86_64-branch/doc/guide/MLtonCont
U mlton/branches/on-20050822-x86_64-branch/doc/guide/MLtonExn
U mlton/branches/on-20050822-x86_64-branch/doc/guide/MLtonFinalizable
U mlton/branches/on-20050822-x86_64-branch/doc/guide/MLtonGC
U mlton/branches/on-20050822-x86_64-branch/doc/guide/MLtonIO
U mlton/branches/on-20050822-x86_64-branch/doc/guide/MLtonIntInf
U mlton/branches/on-20050822-x86_64-branch/doc/guide/MLtonItimer
U mlton/branches/on-20050822-x86_64-branch/doc/guide/MLtonPlatform
U mlton/branches/on-20050822-x86_64-branch/doc/guide/MLtonPointer
U mlton/branches/on-20050822-x86_64-branch/doc/guide/MLtonProcEnv
U mlton/branches/on-20050822-x86_64-branch/doc/guide/MLtonProcess
U mlton/branches/on-20050822-x86_64-branch/doc/guide/MLtonProfile
U mlton/branches/on-20050822-x86_64-branch/doc/guide/MLtonRandom
U mlton/branches/on-20050822-x86_64-branch/doc/guide/MLtonRlimit
U mlton/branches/on-20050822-x86_64-branch/doc/guide/MLtonRusage
U mlton/branches/on-20050822-x86_64-branch/doc/guide/MLtonSignal
U mlton/branches/on-20050822-x86_64-branch/doc/guide/MLtonSocket
U mlton/branches/on-20050822-x86_64-branch/doc/guide/MLtonStructure
U mlton/branches/on-20050822-x86_64-branch/doc/guide/MLtonSyslog
U mlton/branches/on-20050822-x86_64-branch/doc/guide/MLtonTextIO
U mlton/branches/on-20050822-x86_64-branch/doc/guide/MLtonThread
U mlton/branches/on-20050822-x86_64-branch/doc/guide/MLtonVector
U mlton/branches/on-20050822-x86_64-branch/doc/guide/MLtonWeak
U mlton/branches/on-20050822-x86_64-branch/doc/guide/MLtonWord
U mlton/branches/on-20050822-x86_64-branch/doc/guide/MLtonWorld
U mlton/branches/on-20050822-x86_64-branch/doc/guide/Machine
U mlton/branches/on-20050822-x86_64-branch/doc/guide/ManualPage
U mlton/branches/on-20050822-x86_64-branch/doc/guide/MatchCompilation
U mlton/branches/on-20050822-x86_64-branch/doc/guide/MatchCompile
U mlton/branches/on-20050822-x86_64-branch/doc/guide/MatthewFluet
U mlton/branches/on-20050822-x86_64-branch/doc/guide/MichaelNorrish
U mlton/branches/on-20050822-x86_64-branch/doc/guide/MikeThomas
U mlton/branches/on-20050822-x86_64-branch/doc/guide/MoinMoin
U mlton/branches/on-20050822-x86_64-branch/doc/guide/Monomorphise
U mlton/branches/on-20050822-x86_64-branch/doc/guide/MoscowML
U mlton/branches/on-20050822-x86_64-branch/doc/guide/Multi
U mlton/branches/on-20050822-x86_64-branch/doc/guide/Mutable
A mlton/branches/on-20050822-x86_64-branch/doc/guide/NumericLiteral
U mlton/branches/on-20050822-x86_64-branch/doc/guide/OCaml
U mlton/branches/on-20050822-x86_64-branch/doc/guide/ObjectOrientedProgramming
U mlton/branches/on-20050822-x86_64-branch/doc/guide/OpenGL
U mlton/branches/on-20050822-x86_64-branch/doc/guide/OperatorPrecedence
U mlton/branches/on-20050822-x86_64-branch/doc/guide/OptionalArguments
U mlton/branches/on-20050822-x86_64-branch/doc/guide/OrphanedPages
U mlton/branches/on-20050822-x86_64-branch/doc/guide/OtherSites
U mlton/branches/on-20050822-x86_64-branch/doc/guide/Overloading
U mlton/branches/on-20050822-x86_64-branch/doc/guide/PackedRepresentation
U mlton/branches/on-20050822-x86_64-branch/doc/guide/PageSize
U mlton/branches/on-20050822-x86_64-branch/doc/guide/ParallelMove
U mlton/branches/on-20050822-x86_64-branch/doc/guide/Performance
U mlton/branches/on-20050822-x86_64-branch/doc/guide/PhantomType
U mlton/branches/on-20050822-x86_64-branch/doc/guide/PlatformSpecificNotes
U mlton/branches/on-20050822-x86_64-branch/doc/guide/PolyEqual
U mlton/branches/on-20050822-x86_64-branch/doc/guide/PolyML
U mlton/branches/on-20050822-x86_64-branch/doc/guide/PolymorphicEquality
U mlton/branches/on-20050822-x86_64-branch/doc/guide/Polyvariance
U mlton/branches/on-20050822-x86_64-branch/doc/guide/Poplog
A mlton/branches/on-20050822-x86_64-branch/doc/guide/PortStatus
U mlton/branches/on-20050822-x86_64-branch/doc/guide/PortingMLton
U mlton/branches/on-20050822-x86_64-branch/doc/guide/PrecedenceParse
U mlton/branches/on-20050822-x86_64-branch/doc/guide/Printf
U mlton/branches/on-20050822-x86_64-branch/doc/guide/PrintfGentle
U mlton/branches/on-20050822-x86_64-branch/doc/guide/ProductType
U mlton/branches/on-20050822-x86_64-branch/doc/guide/Profiling
U mlton/branches/on-20050822-x86_64-branch/doc/guide/ProfilingAllocation
U mlton/branches/on-20050822-x86_64-branch/doc/guide/ProfilingCounts
U mlton/branches/on-20050822-x86_64-branch/doc/guide/ProfilingTheStack
U mlton/branches/on-20050822-x86_64-branch/doc/guide/ProfilingTime
U mlton/branches/on-20050822-x86_64-branch/doc/guide/Projects
U mlton/branches/on-20050822-x86_64-branch/doc/guide/Pronounce
U mlton/branches/on-20050822-x86_64-branch/doc/guide/PropertyList
U mlton/branches/on-20050822-x86_64-branch/doc/guide/RSSA
U mlton/branches/on-20050822-x86_64-branch/doc/guide/RSSAShrink
U mlton/branches/on-20050822-x86_64-branch/doc/guide/RSSASimplify
U mlton/branches/on-20050822-x86_64-branch/doc/guide/RayRacine
A mlton/branches/on-20050822-x86_64-branch/doc/guide/Reachability
U mlton/branches/on-20050822-x86_64-branch/doc/guide/Redundant
U mlton/branches/on-20050822-x86_64-branch/doc/guide/RedundantTests
U mlton/branches/on-20050822-x86_64-branch/doc/guide/RefFlatten
U mlton/branches/on-20050822-x86_64-branch/doc/guide/References
U mlton/branches/on-20050822-x86_64-branch/doc/guide/Regions
U mlton/branches/on-20050822-x86_64-branch/doc/guide/ReleaseChecklist
U mlton/branches/on-20050822-x86_64-branch/doc/guide/RemoveUnused
U mlton/branches/on-20050822-x86_64-branch/doc/guide/Restore
A mlton/branches/on-20050822-x86_64-branch/doc/guide/Roadmap
U mlton/branches/on-20050822-x86_64-branch/doc/guide/RunTimeOptions
U mlton/branches/on-20050822-x86_64-branch/doc/guide/RunningOnCygwin
U mlton/branches/on-20050822-x86_64-branch/doc/guide/RunningOnDarwin
U mlton/branches/on-20050822-x86_64-branch/doc/guide/RunningOnFreeBSD
U mlton/branches/on-20050822-x86_64-branch/doc/guide/RunningOnLinux
U mlton/branches/on-20050822-x86_64-branch/doc/guide/RunningOnMinGW
U mlton/branches/on-20050822-x86_64-branch/doc/guide/RunningOnNetBSD
U mlton/branches/on-20050822-x86_64-branch/doc/guide/RunningOnOpenBSD
U mlton/branches/on-20050822-x86_64-branch/doc/guide/RunningOnPowerPC
U mlton/branches/on-20050822-x86_64-branch/doc/guide/RunningOnSolaris
U mlton/branches/on-20050822-x86_64-branch/doc/guide/RunningOnSparc
U mlton/branches/on-20050822-x86_64-branch/doc/guide/SMLNET
U mlton/branches/on-20050822-x86_64-branch/doc/guide/SMLNJ
U mlton/branches/on-20050822-x86_64-branch/doc/guide/SMLNJDeviations
U mlton/branches/on-20050822-x86_64-branch/doc/guide/SMLNJLibrary
U mlton/branches/on-20050822-x86_64-branch/doc/guide/SMLofNJStructure
U mlton/branches/on-20050822-x86_64-branch/doc/guide/SSA
U mlton/branches/on-20050822-x86_64-branch/doc/guide/SSA2
U mlton/branches/on-20050822-x86_64-branch/doc/guide/SSA2Simplify
U mlton/branches/on-20050822-x86_64-branch/doc/guide/SSASimplify
U mlton/branches/on-20050822-x86_64-branch/doc/guide/SXML
U mlton/branches/on-20050822-x86_64-branch/doc/guide/SXMLShrink
U mlton/branches/on-20050822-x86_64-branch/doc/guide/SXMLSimplify
U mlton/branches/on-20050822-x86_64-branch/doc/guide/ScopeInference
U mlton/branches/on-20050822-x86_64-branch/doc/guide/SelfCompiling
U mlton/branches/on-20050822-x86_64-branch/doc/guide/Serialization
U mlton/branches/on-20050822-x86_64-branch/doc/guide/ShowBasis
A mlton/branches/on-20050822-x86_64-branch/doc/guide/ShowProf
U mlton/branches/on-20050822-x86_64-branch/doc/guide/Shrink
U mlton/branches/on-20050822-x86_64-branch/doc/guide/SimplifyTypes
U mlton/branches/on-20050822-x86_64-branch/doc/guide/Sources
U mlton/branches/on-20050822-x86_64-branch/doc/guide/SpaceSafety
A mlton/branches/on-20050822-x86_64-branch/doc/guide/Stabilizers
U mlton/branches/on-20050822-x86_64-branch/doc/guide/StandardML
U mlton/branches/on-20050822-x86_64-branch/doc/guide/StandardMLBooks
A mlton/branches/on-20050822-x86_64-branch/doc/guide/StandardMLGotchas
U mlton/branches/on-20050822-x86_64-branch/doc/guide/StandardMLHistory
U mlton/branches/on-20050822-x86_64-branch/doc/guide/StandardMLImplementations
U mlton/branches/on-20050822-x86_64-branch/doc/guide/StandardMLPortability
U mlton/branches/on-20050822-x86_64-branch/doc/guide/StandardMLTutorials
U mlton/branches/on-20050822-x86_64-branch/doc/guide/StephenWeeks
U mlton/branches/on-20050822-x86_64-branch/doc/guide/StyleGuide
U mlton/branches/on-20050822-x86_64-branch/doc/guide/Subversion
U mlton/branches/on-20050822-x86_64-branch/doc/guide/SureshJagannathan
U mlton/branches/on-20050822-x86_64-branch/doc/guide/Survey
U mlton/branches/on-20050822-x86_64-branch/doc/guide/SurveyDone
U mlton/branches/on-20050822-x86_64-branch/doc/guide/Swerve
U mlton/branches/on-20050822-x86_64-branch/doc/guide/SyntacticConventions
U mlton/branches/on-20050822-x86_64-branch/doc/guide/SystemInfo
U mlton/branches/on-20050822-x86_64-branch/doc/guide/TILT
U mlton/branches/on-20050822-x86_64-branch/doc/guide/Talk
U mlton/branches/on-20050822-x86_64-branch/doc/guide/TalkDiveIn
U mlton/branches/on-20050822-x86_64-branch/doc/guide/TalkFolkLore
U mlton/branches/on-20050822-x86_64-branch/doc/guide/TalkFromSMLTo
U mlton/branches/on-20050822-x86_64-branch/doc/guide/TalkHowHigherOrder
U mlton/branches/on-20050822-x86_64-branch/doc/guide/TalkHowModules
U mlton/branches/on-20050822-x86_64-branch/doc/guide/TalkHowPolymorphism
U mlton/branches/on-20050822-x86_64-branch/doc/guide/TalkMLtonApproach
U mlton/branches/on-20050822-x86_64-branch/doc/guide/TalkMLtonFeatures
U mlton/branches/on-20050822-x86_64-branch/doc/guide/TalkMLtonHistory
U mlton/branches/on-20050822-x86_64-branch/doc/guide/TalkStandardML
U mlton/branches/on-20050822-x86_64-branch/doc/guide/TalkTemplate
U mlton/branches/on-20050822-x86_64-branch/doc/guide/TalkWholeProgram
U mlton/branches/on-20050822-x86_64-branch/doc/guide/ToMachine
U mlton/branches/on-20050822-x86_64-branch/doc/guide/ToRSSA
U mlton/branches/on-20050822-x86_64-branch/doc/guide/ToSSA2
U mlton/branches/on-20050822-x86_64-branch/doc/guide/TomMurphy
U mlton/branches/on-20050822-x86_64-branch/doc/guide/TrustedGroup
U mlton/branches/on-20050822-x86_64-branch/doc/guide/TypeChecking
U mlton/branches/on-20050822-x86_64-branch/doc/guide/TypeConstructor
A mlton/branches/on-20050822-x86_64-branch/doc/guide/TypeIndexedValues
U mlton/branches/on-20050822-x86_64-branch/doc/guide/TypeVariableScope
U mlton/branches/on-20050822-x86_64-branch/doc/guide/Unicode
U mlton/branches/on-20050822-x86_64-branch/doc/guide/UniversalType
U mlton/branches/on-20050822-x86_64-branch/doc/guide/UnresolvedBugs
U mlton/branches/on-20050822-x86_64-branch/doc/guide/UnsafeStructure
U mlton/branches/on-20050822-x86_64-branch/doc/guide/Useless
U mlton/branches/on-20050822-x86_64-branch/doc/guide/Users
A mlton/branches/on-20050822-x86_64-branch/doc/guide/Utilities
U mlton/branches/on-20050822-x86_64-branch/doc/guide/ValueRestriction
A mlton/branches/on-20050822-x86_64-branch/doc/guide/VariableArityPolymorphism
U mlton/branches/on-20050822-x86_64-branch/doc/guide/Variant
U mlton/branches/on-20050822-x86_64-branch/doc/guide/VesaKarvonen
U mlton/branches/on-20050822-x86_64-branch/doc/guide/WantedPages
U mlton/branches/on-20050822-x86_64-branch/doc/guide/WebSite
U mlton/branches/on-20050822-x86_64-branch/doc/guide/WesleyTerpstra
U mlton/branches/on-20050822-x86_64-branch/doc/guide/WholeProgramOptimization
U mlton/branches/on-20050822-x86_64-branch/doc/guide/WikiMacros
U mlton/branches/on-20050822-x86_64-branch/doc/guide/WikiName
U mlton/branches/on-20050822-x86_64-branch/doc/guide/WikiTool
U mlton/branches/on-20050822-x86_64-branch/doc/guide/XML
U mlton/branches/on-20050822-x86_64-branch/doc/guide/XMLShrink
U mlton/branches/on-20050822-x86_64-branch/doc/guide/XMLSimplify
U mlton/branches/on-20050822-x86_64-branch/doc/guide/XMLSimplifyTypes
U mlton/branches/on-20050822-x86_64-branch/doc/guide/ZZZOrphanedPages
U mlton/branches/on-20050822-x86_64-branch/doc/guide/Zone
U mlton/branches/on-20050822-x86_64-branch/doc/guide/eXene
U mlton/branches/on-20050822-x86_64-branch/doc/guide/fxp
U mlton/branches/on-20050822-x86_64-branch/doc/guide/index.html
U mlton/branches/on-20050822-x86_64-branch/doc/guide/mGTK
U mlton/branches/on-20050822-x86_64-branch/doc/license/MLton-LICENSE
A mlton/branches/on-20050822-x86_64-branch/doc/license/NEC-LICENSE
U mlton/branches/on-20050822-x86_64-branch/ide/emacs/esml-mlb-mode.el
U mlton/branches/on-20050822-x86_64-branch/include/x86-main.h
U mlton/branches/on-20050822-x86_64-branch/lib/ckit-lib/Makefile
A mlton/branches/on-20050822-x86_64-branch/lib/mlnlffi/memory/platform/memory.amd64-freebsd.mlb
A mlton/branches/on-20050822-x86_64-branch/lib/mlnlffi/memory/platform/memory.amd64-netbsd.mlb
A mlton/branches/on-20050822-x86_64-branch/lib/mlnlffi/memory/platform/memory.amd64-openbsd.mlb
A mlton/branches/on-20050822-x86_64-branch/lib/mlnlffi/memory/platform/memory.x86-darwin.mlb
U mlton/branches/on-20050822-x86_64-branch/lib/mlrisc-lib/MLRISC.patch
U mlton/branches/on-20050822-x86_64-branch/lib/mlrisc-lib/Makefile
U mlton/branches/on-20050822-x86_64-branch/lib/mlton/basic/http.sml
U mlton/branches/on-20050822-x86_64-branch/lib/smlnj-lib/Makefile
U mlton/branches/on-20050822-x86_64-branch/mlton/codegen/x86-codegen/x86-allocate-registers.fun
U mlton/branches/on-20050822-x86_64-branch/mlton/codegen/x86-codegen/x86-codegen.fun
U mlton/branches/on-20050822-x86_64-branch/mlton/codegen/x86-codegen/x86-generate-transfers.fun
U mlton/branches/on-20050822-x86_64-branch/mlton/codegen/x86-codegen/x86-mlton-basic.sig
U mlton/branches/on-20050822-x86_64-branch/mlton/codegen/x86-codegen/x86-translate.fun
U mlton/branches/on-20050822-x86_64-branch/mlton/codegen/x86-codegen/x86-validate.fun
U mlton/branches/on-20050822-x86_64-branch/mlton/codegen/x86-codegen/x86.fun
U mlton/branches/on-20050822-x86_64-branch/mlton/codegen/x86-codegen/x86.sig
U mlton/branches/on-20050822-x86_64-branch/mlton/front-end/mlb.grm
U mlton/branches/on-20050822-x86_64-branch/mlton/main/main.fun
U mlton/branches/on-20050822-x86_64-branch/mlton/ssa/useless.fun
U mlton/branches/on-20050822-x86_64-branch/package/debian/changelog
U mlton/branches/on-20050822-x86_64-branch/package/debian/control
U mlton/branches/on-20050822-x86_64-branch/runtime/platform/darwin.c
----------------------------------------------------------------------
Modified: mlton/branches/on-20050822-x86_64-branch/Makefile
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/Makefile 2006-11-07 01:53:06 UTC (rev 4810)
+++ mlton/branches/on-20050822-x86_64-branch/Makefile 2006-11-07 03:45:26 UTC (rev 4811)
@@ -168,7 +168,7 @@
# do not change "make" to "$(MAKE)" in the following line
cd "$(BSDSRC)/package/freebsd" && MAINTAINER_MODE=yes make build-package
-LIBRARIES = ckit-lib cml mlnlffi-lib mlrisc-lib mlyacc-lib smlnj-lib
+LIBRARIES = ckit-lib cml mlnlffi-lib mlyacc-lib smlnj-lib
.PHONY: libraries-no-check
libraries-no-check:
@@ -180,9 +180,10 @@
$(CP) "$(SRC)/lib/cml/." "$(LIB)/sml/cml"
$(CP) "$(SRC)/lib/ckit-lib/ckit/." "$(LIB)/sml/ckit-lib"
$(CP) "$(SRC)/lib/mlnlffi/." "$(LIB)/sml/mlnlffi-lib"
- $(CP) "$(SRC)/lib/mlrisc-lib/MLRISC/." "$(LIB)/sml/mlrisc-lib"
+ true || $(CP) "$(SRC)/lib/mlrisc-lib/MLRISC/." "$(LIB)/sml/mlrisc-lib"
$(CP) "$(SRC)/lib/mlyacc/." "$(LIB)/sml/mlyacc-lib"
$(CP) "$(SRC)/lib/smlnj-lib/smlnj-lib/." "$(LIB)/sml/smlnj-lib"
+ find "$(LIB)/sml" -type d -name .cm | xargs rm -rf
find "$(LIB)/sml" -type d -name .svn | xargs rm -rf
find "$(LIB)/sml" -type f -name .ignore | xargs rm -rf
@@ -245,7 +246,7 @@
.PHONY: profiled
profiled:
for t in alloc count time; do \
- $(MAKE) -C "$(COMP)" "AOUT=$(AOUT).$$t" \
+ $(MAKE) -C "$(COMP)" "AOUT=$(AOUT).$$t" \
COMPILE_ARGS="-profile $$t"; \
$(CP) "$(COMP)/$(AOUT).$$t" "$(LIB)/"; \
"$(LIB)/$(AOUT).$$t" @MLton -- "$(LIB)/world.$$t"; \
Modified: mlton/branches/on-20050822-x86_64-branch/basis-library/arrays-and-vectors/mono-vector.sig
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/basis-library/arrays-and-vectors/mono-vector.sig 2006-11-07 01:53:06 UTC (rev 4810)
+++ mlton/branches/on-20050822-x86_64-branch/basis-library/arrays-and-vectors/mono-vector.sig 2006-11-07 03:45:26 UTC (rev 4811)
@@ -9,6 +9,7 @@
val collate: (elem * elem -> order) -> vector * vector -> order
val concat: vector list -> vector
val exists: (elem -> bool) -> vector -> bool
+ val find: (elem -> bool) -> vector -> elem option
val findi: (int * elem -> bool) -> vector -> (int * elem) option
val foldl: (elem * 'a -> 'a) -> 'a -> vector -> 'a
val foldli: (int * elem * 'a -> 'a) -> 'a -> vector -> 'a
Modified: mlton/branches/on-20050822-x86_64-branch/basis-library/real/real.sml
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/basis-library/real/real.sml 2006-11-07 01:53:06 UTC (rev 4810)
+++ mlton/branches/on-20050822-x86_64-branch/basis-library/real/real.sml 2006-11-07 03:45:26 UTC (rev 4811)
@@ -110,7 +110,7 @@
val nan = posInf + negInf
val class = IEEEReal.mkClass R.class
-
+
val abs =
if MLton.Codegen.isNative
then abs
@@ -120,13 +120,13 @@
INF => posInf
| NAN => x
| _ => if signBit x then ~x else x
-
+
fun isFinite r =
case class r of
INF => false
| NAN => false
| _ => true
-
+
val op == = Prim.==
val op != = not o op ==
@@ -199,7 +199,7 @@
| I.LESS => G.LESS
| I.UNORDERED => raise IEEEReal.Unordered
end
-
+
fun unordered (x, y) = isNan x orelse isNan y
val nextAfter: real * real -> real =
@@ -217,20 +217,23 @@
R.nextAfterDown r
else
R.nextAfterUp r
-
- fun toManExp x =
- case class x of
- INF => {exp = 0, man = x}
- | NAN => {exp = 0, man = nan}
- | ZERO => {exp = 0, man = x}
- | _ =>
- let
- val r: C_Int.t ref = ref 0
- val man = R.frexp (x, r)
- in
- {exp = C_Int.toInt (!r), man = man}
- end
+ local
+ val one = One.make (fn () => ref (0 : C_Int.t))
+ in
+ fun toManExp x =
+ case class x of
+ INF => {exp = 0, man = x}
+ | NAN => {exp = 0, man = nan}
+ | ZERO => {exp = 0, man = x}
+ | _ => One.use (one, fn r =>
+ let
+ val man = R.frexp (x, r)
+ in
+ {exp = C_Int.toInt (!r), man = man}
+ end)
+ end
+
fun fromManExp {exp, man} =
(R.ldexp (man, C_Int.fromInt exp))
handle Overflow =>
@@ -248,7 +251,7 @@
| _ => fromManExp {exp = exp, man = man}
local
- val oneInt = One.make (fn () => ref zero)
+ val one = One.make (fn () => ref zero)
in
fun split x =
case class x of
@@ -256,26 +259,25 @@
whole = x}
| NAN => {frac = nan, whole = nan}
| _ =>
- One.use
- (oneInt, fn int =>
- let
- val frac = R.modf (x, int)
- val whole = !int
- (* Some platforms' C libraries don't get sign of
- * zero right.
- *)
- fun fix y =
- if class y = ZERO andalso not (sameSign (x, y))
- then ~ y
- else y
- in
- {frac = fix frac,
- whole = fix whole}
- end)
+ let
+ val (frac, whole) =
+ One.use (one, fn int =>
+ (R.modf (x, int), !int))
+ (* Some platforms' C libraries don't get sign of
+ * zero right.
+ *)
+ fun fix y =
+ if class y = ZERO andalso not (sameSign (x, y))
+ then ~ y
+ else y
+ in
+ {frac = fix frac,
+ whole = fix whole}
+ end
end
-
+
val realMod = #frac o split
-
+
fun checkFloat x =
case class x of
INF => raise Overflow
@@ -363,7 +365,7 @@
(* toDecimal, fmt, toString: binary -> decimal conversions. *)
datatype mode = Fix | Gen | Sci
local
- val decpt: C_Int.int ref = ref 0
+ val one = One.make (fn () => ref (0: C_Int.int))
in
fun gdtoa (x: real, mode: mode, ndig: int) =
let
@@ -372,12 +374,13 @@
Fix => 3
| Gen => 0
| Sci => 2
- val cs = Prim.gdtoa (x, mode, C_Int.fromInt ndig, decpt)
in
- (cs, C_Int.toInt (!decpt))
+ One.use (one, fn decpt =>
+ (Prim.gdtoa (x, mode, ndig, decpt),
+ C_Int.toInt (!decpt)))
end
end
-
+
fun toDecimal (x: real): IEEEReal.decimal_approx =
case class x of
INF => {class = INF,
@@ -588,7 +591,7 @@
| _ => doit x
end
end
-
+
val toString = fmt (StringCvt.GEN NONE)
local
@@ -672,7 +675,7 @@
else (i, false)
val x = Prim.strto (NullString.nullTerm (IntInf.toString i))
in
- if sign then ~ x else x
+ if sign then ~ x else x
end
val toIntInfM: rounding_mode -> real -> LargeInt.int =
@@ -760,7 +763,7 @@
(* Patch functions to handle out-of-range args. Many C math
* libraries do not do what the SML Basis Spec requires.
*)
-
+
local
fun patch f x =
if x < ~one orelse x > one
@@ -855,13 +858,13 @@
INF => x
| ZERO => one
| _ => R.Math.cosh x
-
+
fun sinh x =
case class x of
INF => x
| ZERO => x
| _ => R.Math.sinh x
-
+
fun tanh x =
case class x of
INF => if x > zero then one else negOne
Modified: mlton/branches/on-20050822-x86_64-branch/bin/make-pdf-guide
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/bin/make-pdf-guide 2006-11-07 01:53:06 UTC (rev 4810)
+++ mlton/branches/on-20050822-x86_64-branch/bin/make-pdf-guide 2006-11-07 03:45:26 UTC (rev 4811)
@@ -29,7 +29,7 @@
pdf='mlton-guide.pdf'
script='.script'
titlepage='title.html'
-tmp='/tmp/mlton-guide'
+tmp="/tmp/mlton-guide.$$"
version=`date +%Y%m%d`
rm -rf "$tmp"
@@ -133,6 +133,4 @@
mv "$pdf" "$src/doc/guide"
-cd
-
rm -rf "$tmp"
Modified: mlton/branches/on-20050822-x86_64-branch/doc/changelog
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/doc/changelog 2006-11-07 01:53:06 UTC (rev 4810)
+++ mlton/branches/on-20050822-x86_64-branch/doc/changelog 2006-11-07 03:45:26 UTC (rev 4811)
@@ -1,5 +1,9 @@
Here are the changes since version 20051202.
+* 2006-08-03
+ - Fixed a bug in the "useless" SSA optimization, caused by calling
+ an imported C function and then ignoring the result.
+
* 2006-06-24
- Fixed a bug in pass to flatten data structures. Thanks to Joe Hurd
for the bug report.
Modified: mlton/branches/on-20050822-x86_64-branch/doc/guide/AST
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/doc/guide/AST 2006-11-07 01:53:06 UTC (rev 4810)
+++ mlton/branches/on-20050822-x86_64-branch/doc/guide/AST 2006-11-07 03:45:26 UTC (rev 4811)
@@ -18,6 +18,12 @@
<body lang="en" dir="ltr">
+<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+_uacct = "UA-833377-1";
+urchinTracker();
+</script>
<table bgcolor = lightblue cellspacing = 0 style = "border: 0px;" width = 100%>
<tr>
<td style = "
@@ -25,7 +31,7 @@
color: darkblue;
font-size: 150%;
text-align: left;">
- <a class = mltona href="Home">MLton 20051202</a>
+ <a class = mltona href="Home">MLton 20061025</a>
<td style = "
border: 0px;
font-size: 150%;
@@ -55,22 +61,22 @@
</p>
<h2 id="head-8781d615fd77be9578225c40ac67b9471394cced">Implementation</h2>
-<a href = "http://mlton.org/cgi-bin/viewsvn.cgi/mlton/tags/on-20051202-release/mlton/ast/ast-programs.sig?view=markup"><img src="moin-www.png" alt="[WWW]" height="11" width="11">ast-programs.sig</a>
+<a href = "http://mlton.org/cgi-bin/viewsvn.cgi/mlton/tags/on-20061025-release/mlton/ast/ast-programs.sig?view=markup"><img src="moin-www.png" alt="[WWW]" height="11" width="11">ast-programs.sig</a>
-<a href = "http://mlton.org/cgi-bin/viewsvn.cgi/mlton/tags/on-20051202-release/mlton/ast/ast-programs.fun?view=markup"><img src="moin-www.png" alt="[WWW]" height="11" width="11">ast-programs.fun</a>
+<a href = "http://mlton.org/cgi-bin/viewsvn.cgi/mlton/tags/on-20061025-release/mlton/ast/ast-programs.fun?view=markup"><img src="moin-www.png" alt="[WWW]" height="11" width="11">ast-programs.fun</a>
<br>
-<a href = "http://mlton.org/cgi-bin/viewsvn.cgi/mlton/tags/on-20051202-release/mlton/ast/ast-modules.sig?view=markup"><img src="moin-www.png" alt="[WWW]" height="11" width="11">ast-modules.sig</a>
+<a href = "http://mlton.org/cgi-bin/viewsvn.cgi/mlton/tags/on-20061025-release/mlton/ast/ast-modules.sig?view=markup"><img src="moin-www.png" alt="[WWW]" height="11" width="11">ast-modules.sig</a>
-<a href = "http://mlton.org/cgi-bin/viewsvn.cgi/mlton/tags/on-20051202-release/mlton/ast/ast-modules.fun?view=markup"><img src="moin-www.png" alt="[WWW]" height="11" width="11">ast-modules.fun</a>
+<a href = "http://mlton.org/cgi-bin/viewsvn.cgi/mlton/tags/on-20061025-release/mlton/ast/ast-modules.fun?view=markup"><img src="moin-www.png" alt="[WWW]" height="11" width="11">ast-modules.fun</a>
<br>
-<a href = "http://mlton.org/cgi-bin/viewsvn.cgi/mlton/tags/on-20051202-release/mlton/ast/ast-core.sig?view=markup"><img src="moin-www.png" alt="[WWW]" height="11" width="11">ast-core.sig</a>
+<a href = "http://mlton.org/cgi-bin/viewsvn.cgi/mlton/tags/on-20061025-release/mlton/ast/ast-core.sig?view=markup"><img src="moin-www.png" alt="[WWW]" height="11" width="11">ast-core.sig</a>
-<a href = "http://mlton.org/cgi-bin/viewsvn.cgi/mlton/tags/on-20051202-release/mlton/ast/ast-core.fun?view=markup"><img src="moin-www.png" alt="[WWW]" height="11" width="11">ast-core.fun</a>
+<a href = "http://mlton.org/cgi-bin/viewsvn.cgi/mlton/tags/on-20061025-release/mlton/ast/ast-core.fun?view=markup"><img src="moin-www.png" alt="[WWW]" height="11" width="11">ast-core.fun</a>
<br>
-<a href = "http://mlton.org/cgi-bin/viewsvn.cgi/mlton/tags/on-20051202-release/mlton/ast"><img src="moin-www.png" alt="[WWW]" height="11" width="11">ast</a>
+<a href = "http://mlton.org/cgi-bin/viewsvn.cgi/mlton/tags/on-20061025-release/mlton/ast"><img src="moin-www.png" alt="[WWW]" height="11" width="11">ast</a>
<h2 id="head-a6de4b535fedeaa8890bd890b60fe09f87b5f96a">Type Checking</h2>
<p>
The AST <a href="IntermediateLanguage">IntermediateLanguage</a> has no independent type checker. Type inference is performed on an AST program as part of <a href="Elaborate">Elaborate</a>.
Modified: mlton/branches/on-20050822-x86_64-branch/doc/guide/AccessControl
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/doc/guide/AccessControl 2006-11-07 01:53:06 UTC (rev 4810)
+++ mlton/branches/on-20050822-x86_64-branch/doc/guide/AccessControl 2006-11-07 03:45:26 UTC (rev 4811)
@@ -18,6 +18,12 @@
<body lang="en" dir="ltr">
+<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+_uacct = "UA-833377-1";
+urchinTracker();
+</script>
<table bgcolor = lightblue cellspacing = 0 style = "border: 0px;" width = 100%>
<tr>
<td style = "
@@ -25,7 +31,7 @@
color: darkblue;
font-size: 150%;
text-align: left;">
- <a class = mltona href="Home">MLton 20051202</a>
+ <a class = mltona href="Home">MLton 20061025</a>
<td style = "
border: 0px;
font-size: 150%;
Modified: mlton/branches/on-20050822-x86_64-branch/doc/guide/AdmitsEquality
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/doc/guide/AdmitsEquality 2006-11-07 01:53:06 UTC (rev 4810)
+++ mlton/branches/on-20050822-x86_64-branch/doc/guide/AdmitsEquality 2006-11-07 03:45:26 UTC (rev 4811)
@@ -18,6 +18,12 @@
<body lang="en" dir="ltr">
+<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+_uacct = "UA-833377-1";
+urchinTracker();
+</script>
<table bgcolor = lightblue cellspacing = 0 style = "border: 0px;" width = 100%>
<tr>
<td style = "
@@ -25,7 +31,7 @@
color: darkblue;
font-size: 150%;
text-align: left;">
- <a class = mltona href="Home">MLton 20051202</a>
+ <a class = mltona href="Home">MLton 20061025</a>
<td style = "
border: 0px;
font-size: 150%;
@@ -58,7 +64,7 @@
</p>
<pre class=code>
-<B><FONT COLOR="#A020F0">type</FONT></B><FONT COLOR="#228B22"><B> ('a1, ..., 'an) t </FONT></B>=<FONT COLOR="#228B22"><B> </FONT></B>...
+<B><FONT COLOR="#A020F0">type</FONT></B> ('a1, ..., 'an) t <B><FONT COLOR="#5F9EA0">=</FONT></B> ...
</PRE>
<p>
@@ -71,8 +77,8 @@
</p>
<pre class=code>
-<B><FONT COLOR="#A020F0">type</FONT></B><FONT COLOR="#228B22"><B> t </FONT></B>=<FONT COLOR="#228B22"><B> bool * int
-</FONT></B></PRE>
+<B><FONT COLOR="#A020F0">type</FONT></B> t <B><FONT COLOR="#5F9EA0">=</FONT></B> <B><FONT COLOR="#228B22">bool</FONT></B> <B><FONT COLOR="#5F9EA0">*</FONT></B> <B><FONT COLOR="#228B22">int</FONT></B>
+</PRE>
<p>
</p>
@@ -81,8 +87,8 @@
</p>
<pre class=code>
-<B><FONT COLOR="#A020F0">type</FONT></B><FONT COLOR="#228B22"><B> t </FONT></B>=<FONT COLOR="#228B22"><B> bool * int * real
-</FONT></B></PRE>
+<B><FONT COLOR="#A020F0">type</FONT></B> t <B><FONT COLOR="#5F9EA0">=</FONT></B> <B><FONT COLOR="#228B22">bool</FONT></B> <B><FONT COLOR="#5F9EA0">*</FONT></B> <B><FONT COLOR="#228B22">int</FONT></B> <B><FONT COLOR="#5F9EA0">*</FONT></B> <B><FONT COLOR="#228B22">real</FONT></B>
+</PRE>
<p>
</p>
@@ -94,8 +100,8 @@
</p>
<pre class=code>
-<B><FONT COLOR="#A020F0">type</FONT></B><FONT COLOR="#228B22"><B> 'a t </FONT></B>=<FONT COLOR="#228B22"><B> bool * 'a
-</FONT></B></PRE>
+<B><FONT COLOR="#A020F0">type</FONT></B> 'a t <B><FONT COLOR="#5F9EA0">=</FONT></B> <B><FONT COLOR="#228B22">bool</FONT></B> <B><FONT COLOR="#5F9EA0">*</FONT></B> 'a
+</PRE>
<p>
</p>
@@ -107,8 +113,8 @@
</p>
<pre class=code>
-<B><FONT COLOR="#A020F0">type</FONT></B><FONT COLOR="#228B22"><B> 'a t </FONT></B>=<FONT COLOR="#228B22"><B> real * 'a
-</FONT></B></PRE>
+<B><FONT COLOR="#A020F0">type</FONT></B> 'a t <B><FONT COLOR="#5F9EA0">=</FONT></B> <B><FONT COLOR="#228B22">real</FONT></B> <B><FONT COLOR="#5F9EA0">*</FONT></B> 'a
+</PRE>
<p>
</p>
@@ -120,20 +126,20 @@
</p>
<pre class=code>
-<B><FONT COLOR="#0000FF">structure</FONT></B> Ok: <B><FONT COLOR="#0000FF">sig</FONT></B> <B><FONT COLOR="#A020F0">eqtype</FONT></B><FONT COLOR="#228B22"><B> 'a t </FONT></B><B><FONT COLOR="#0000FF">end</FONT></B> =
- <B><FONT COLOR="#0000FF">struct</FONT></B>
- <B><FONT COLOR="#A020F0">type</FONT></B><FONT COLOR="#228B22"><B> 'a t </FONT></B>=<FONT COLOR="#228B22"><B> bool * 'a
- </FONT></B><B><FONT COLOR="#0000FF">end</FONT></B>
+<B><FONT COLOR="#5F9EA0">structure</FONT></B> Ok: <B><FONT COLOR="#5F9EA0">sig</FONT></B> <B><FONT COLOR="#A020F0">eqtype</FONT></B> 'a t <B><FONT COLOR="#A020F0">end</FONT></B> <B><FONT COLOR="#5F9EA0">=</FONT></B>
+ <B><FONT COLOR="#5F9EA0">struct</FONT></B>
+ <B><FONT COLOR="#A020F0">type</FONT></B> 'a t <B><FONT COLOR="#5F9EA0">=</FONT></B> <B><FONT COLOR="#228B22">bool</FONT></B> <B><FONT COLOR="#5F9EA0">*</FONT></B> 'a
+ <B><FONT COLOR="#A020F0">end</FONT></B>
</PRE>
<p>
</p>
<pre class=code>
-<B><FONT COLOR="#0000FF">structure</FONT></B> Bad: <B><FONT COLOR="#0000FF">sig</FONT></B> <B><FONT COLOR="#A020F0">eqtype</FONT></B><FONT COLOR="#228B22"><B> 'a t </FONT></B><B><FONT COLOR="#0000FF">end</FONT></B> =
- <B><FONT COLOR="#0000FF">struct</FONT></B>
- <B><FONT COLOR="#A020F0">type</FONT></B><FONT COLOR="#228B22"><B> 'a t </FONT></B>=<FONT COLOR="#228B22"><B> real * int * 'a
- </FONT></B><B><FONT COLOR="#0000FF">end</FONT></B>
+<B><FONT COLOR="#5F9EA0">structure</FONT></B> Bad: <B><FONT COLOR="#5F9EA0">sig</FONT></B> <B><FONT COLOR="#A020F0">eqtype</FONT></B> 'a t <B><FONT COLOR="#A020F0">end</FONT></B> <B><FONT COLOR="#5F9EA0">=</FONT></B>
+ <B><FONT COLOR="#5F9EA0">struct</FONT></B>
+ <B><FONT COLOR="#A020F0">type</FONT></B> 'a t <B><FONT COLOR="#5F9EA0">=</FONT></B> <B><FONT COLOR="#228B22">real</FONT></B> <B><FONT COLOR="#5F9EA0">*</FONT></B> <B><FONT COLOR="#228B22">int</FONT></B> <B><FONT COLOR="#5F9EA0">*</FONT></B> 'a
+ <B><FONT COLOR="#A020F0">end</FONT></B>
</PRE>
<p>
@@ -150,16 +156,16 @@
</p>
<pre class=code>
-<B><FONT COLOR="#A020F0">datatype</FONT></B><FONT COLOR="#228B22"><B> t </FONT></B>=<FONT COLOR="#228B22"><B> <FONT COLOR="#B8860B">A</FONT> <B><FONT COLOR="#A020F0">of</FONT></B> bool </FONT></B>|<FONT COLOR="#228B22"><B> <FONT COLOR="#B8860B">B</FONT> <B><FONT COLOR="#A020F0">of</FONT></B> char * int
-</FONT></B></PRE>
+<B><FONT COLOR="#A020F0">datatype</FONT></B> t <B><FONT COLOR="#5F9EA0">=</FONT></B> A <B><FONT COLOR="#A020F0">of</FONT></B> <B><FONT COLOR="#228B22">bool</FONT></B> <B><FONT COLOR="#5F9EA0">|</FONT></B> B <B><FONT COLOR="#A020F0">of</FONT></B> <B><FONT COLOR="#228B22">char</FONT></B> <B><FONT COLOR="#5F9EA0">*</FONT></B> <B><FONT COLOR="#228B22">int</FONT></B>
+</PRE>
<p>
</p>
<p>
Nullary constructors trivially admit equality, so that the following datatype admits equality.
<pre class=code>
-<B><FONT COLOR="#A020F0">datatype</FONT></B><FONT COLOR="#228B22"><B> t </FONT></B>=<FONT COLOR="#228B22"><B> <FONT COLOR="#B8860B">A</FONT> </FONT></B>|<FONT COLOR="#228B22"><B> <FONT COLOR="#B8860B">B</FONT> </FONT></B>|<FONT COLOR="#228B22"><B> <FONT COLOR="#B8860B">C</FONT>
-</FONT></B></PRE>
+<B><FONT COLOR="#A020F0">datatype</FONT></B> t <B><FONT COLOR="#5F9EA0">=</FONT></B> A <B><FONT COLOR="#5F9EA0">|</FONT></B> B <B><FONT COLOR="#5F9EA0">|</FONT></B> C
+</PRE>
</p>
<p>
@@ -167,8 +173,8 @@
</p>
<pre class=code>
-<B><FONT COLOR="#A020F0">datatype</FONT></B><FONT COLOR="#228B22"><B> 'a t </FONT></B>=<FONT COLOR="#228B22"><B> <FONT COLOR="#B8860B">A</FONT> <B><FONT COLOR="#A020F0">of</FONT></B> bool * 'a </FONT></B>|<FONT COLOR="#228B22"><B> <FONT COLOR="#B8860B">B</FONT> <B><FONT COLOR="#A020F0">of</FONT></B> 'a
-</FONT></B></PRE>
+<B><FONT COLOR="#A020F0">datatype</FONT></B> 'a t <B><FONT COLOR="#5F9EA0">=</FONT></B> A <B><FONT COLOR="#A020F0">of</FONT></B> <B><FONT COLOR="#228B22">bool</FONT></B> <B><FONT COLOR="#5F9EA0">*</FONT></B> 'a <B><FONT COLOR="#5F9EA0">|</FONT></B> B <B><FONT COLOR="#A020F0">of</FONT></B> 'a
+</PRE>
<p>
</p>
@@ -177,9 +183,9 @@
</p>
<pre class=code>
-<B><FONT COLOR="#A020F0">type</FONT></B><FONT COLOR="#228B22"><B> 'a tA </FONT></B>=<FONT COLOR="#228B22"><B> bool * 'a
-</FONT></B><B><FONT COLOR="#A020F0">type</FONT></B><FONT COLOR="#228B22"><B> 'a tB </FONT></B>=<FONT COLOR="#228B22"><B> 'a
-</FONT></B></PRE>
+<B><FONT COLOR="#A020F0">type</FONT></B> 'a tA <B><FONT COLOR="#5F9EA0">=</FONT></B> <B><FONT COLOR="#228B22">bool</FONT></B> <B><FONT COLOR="#5F9EA0">*</FONT></B> 'a
+<B><FONT COLOR="#A020F0">type</FONT></B> 'a tB <B><FONT COLOR="#5F9EA0">=</FONT></B> 'a
+</PRE>
<p>
</p>
@@ -191,8 +197,8 @@
</p>
<pre class=code>
-<B><FONT COLOR="#A020F0">datatype</FONT></B><FONT COLOR="#228B22"><B> 'a t </FONT></B>=<FONT COLOR="#228B22"><B> <FONT COLOR="#B8860B">A</FONT> <B><FONT COLOR="#A020F0">of</FONT></B> bool * 'a </FONT></B>|<FONT COLOR="#228B22"><B> <FONT COLOR="#B8860B">B</FONT> <B><FONT COLOR="#A020F0">of</FONT></B> real * 'a
-</FONT></B></PRE>
+<B><FONT COLOR="#A020F0">datatype</FONT></B> 'a t <B><FONT COLOR="#5F9EA0">=</FONT></B> A <B><FONT COLOR="#A020F0">of</FONT></B> <B><FONT COLOR="#228B22">bool</FONT></B> <B><FONT COLOR="#5F9EA0">*</FONT></B> 'a <B><FONT COLOR="#5F9EA0">|</FONT></B> B <B><FONT COLOR="#A020F0">of</FONT></B> <B><FONT COLOR="#228B22">real</FONT></B> <B><FONT COLOR="#5F9EA0">*</FONT></B> 'a
+</PRE>
<p>
</p>
@@ -201,10 +207,10 @@
</p>
<pre class=code>
-<B><FONT COLOR="#0000FF">structure</FONT></B> Bad: <B><FONT COLOR="#0000FF">sig</FONT></B> <B><FONT COLOR="#A020F0">eqtype</FONT></B><FONT COLOR="#228B22"><B> 'a t </FONT></B><B><FONT COLOR="#0000FF">end</FONT></B> =
- <B><FONT COLOR="#0000FF">struct</FONT></B>
- <B><FONT COLOR="#A020F0">datatype</FONT></B><FONT COLOR="#228B22"><B> 'a t </FONT></B>=<FONT COLOR="#228B22"><B> <FONT COLOR="#B8860B">A</FONT> <B><FONT COLOR="#A020F0">of</FONT></B> bool * 'a </FONT></B>|<FONT COLOR="#228B22"><B> <FONT COLOR="#B8860B">B</FONT> <B><FONT COLOR="#A020F0">of</FONT></B> real * 'a
- </FONT></B><B><FONT COLOR="#0000FF">end</FONT></B>
+<B><FONT COLOR="#5F9EA0">structure</FONT></B> Bad: <B><FONT COLOR="#5F9EA0">sig</FONT></B> <B><FONT COLOR="#A020F0">eqtype</FONT></B> 'a t <B><FONT COLOR="#A020F0">end</FONT></B> <B><FONT COLOR="#5F9EA0">=</FONT></B>
+ <B><FONT COLOR="#5F9EA0">struct</FONT></B>
+ <B><FONT COLOR="#A020F0">datatype</FONT></B> 'a t <B><FONT COLOR="#5F9EA0">=</FONT></B> A <B><FONT COLOR="#A020F0">of</FONT></B> <B><FONT COLOR="#228B22">bool</FONT></B> <B><FONT COLOR="#5F9EA0">*</FONT></B> 'a <B><FONT COLOR="#5F9EA0">|</FONT></B> B <B><FONT COLOR="#A020F0">of</FONT></B> <B><FONT COLOR="#228B22">real</FONT></B> <B><FONT COLOR="#5F9EA0">*</FONT></B> 'a
+ <B><FONT COLOR="#A020F0">end</FONT></B>
</PRE>
<p>
@@ -224,8 +230,8 @@
</p>
<pre class=code>
-<B><FONT COLOR="#A020F0">datatype</FONT></B><FONT COLOR="#228B22"><B> t </FONT></B>=<FONT COLOR="#228B22"><B> <FONT COLOR="#B8860B">A</FONT> </FONT></B>|<FONT COLOR="#228B22"><B> <FONT COLOR="#B8860B">B</FONT> <B><FONT COLOR="#A020F0">of</FONT></B> int * t
-</FONT></B></PRE>
+<B><FONT COLOR="#A020F0">datatype</FONT></B> t <B><FONT COLOR="#5F9EA0">=</FONT></B> A <B><FONT COLOR="#5F9EA0">|</FONT></B> B <B><FONT COLOR="#A020F0">of</FONT></B> <B><FONT COLOR="#228B22">int</FONT></B> <B><FONT COLOR="#5F9EA0">*</FONT></B> t
+</PRE>
<p>
</p>
@@ -235,24 +241,24 @@
<p>
On the other hand, in the following declaration
<pre class=code>
-<B><FONT COLOR="#A020F0">datatype</FONT></B><FONT COLOR="#228B22"><B> t </FONT></B>=<FONT COLOR="#228B22"><B> <FONT COLOR="#B8860B">A</FONT> </FONT></B>|<FONT COLOR="#228B22"><B> <FONT COLOR="#B8860B">B</FONT> <B><FONT COLOR="#A020F0">of</FONT></B> real * t
-</FONT></B></PRE>
+<B><FONT COLOR="#A020F0">datatype</FONT></B> t <B><FONT COLOR="#5F9EA0">=</FONT></B> A <B><FONT COLOR="#5F9EA0">|</FONT></B> B <B><FONT COLOR="#A020F0">of</FONT></B> <B><FONT COLOR="#228B22">real</FONT></B> <B><FONT COLOR="#5F9EA0">*</FONT></B> t
+</PRE>
if we assume that <tt>t</tt> admits equality, then the <tt>B</tt> variant does not admit equality. Hence, the type constructor <tt>t</tt> does not admit equality, and our assumption was inconsistent. Hence, <tt>t</tt> does not admit equality.
</p>
<p>
The same kind of reasoning applies to mutually recursive datatypes as well. For example, the following defines both <tt>t</tt> and <tt>u</tt> to admit equality.
<pre class=code>
-<B><FONT COLOR="#A020F0">datatype</FONT></B><FONT COLOR="#228B22"><B> t </FONT></B>=<FONT COLOR="#228B22"><B> <FONT COLOR="#B8860B">A</FONT> </FONT></B>|<FONT COLOR="#228B22"><B> <FONT COLOR="#B8860B">B</FONT> <B><FONT COLOR="#A020F0">of</FONT></B> u
-</FONT></B><B><FONT COLOR="#A020F0">and</FONT></B><FONT COLOR="#228B22"><B> u </FONT></B>=<FONT COLOR="#228B22"><B> <FONT COLOR="#B8860B">C</FONT> </FONT></B>|<FONT COLOR="#228B22"><B> <FONT COLOR="#B8860B">D</FONT> <B><FONT COLOR="#A020F0">of</FONT></B> t
-</FONT></B></PRE>
+<B><FONT COLOR="#A020F0">datatype</FONT></B> t <B><FONT COLOR="#5F9EA0">=</FONT></B> A <B><FONT COLOR="#5F9EA0">|</FONT></B> B <B><FONT COLOR="#A020F0">of</FONT></B> u
+<B><FONT COLOR="#A020F0">and</FONT></B> u <B><FONT COLOR="#5F9EA0">=</FONT></B> C <B><FONT COLOR="#5F9EA0">|</FONT></B> D <B><FONT COLOR="#A020F0">of</FONT></B> t
+</PRE>
</p>
<p>
But the following defines neither <tt>t</tt> nor <tt>u</tt> to admit equality.
<pre class=code>
-<B><FONT COLOR="#A020F0">datatype</FONT></B><FONT COLOR="#228B22"><B> t </FONT></B>=<FONT COLOR="#228B22"><B> <FONT COLOR="#B8860B">A</FONT> </FONT></B>|<FONT COLOR="#228B22"><B> <FONT COLOR="#B8860B">B</FONT> <B><FONT COLOR="#A020F0">of</FONT></B> u * real
-</FONT></B><B><FONT COLOR="#A020F0">and</FONT></B><FONT COLOR="#228B22"><B> u </FONT></B>=<FONT COLOR="#228B22"><B> <FONT COLOR="#B8860B">C</FONT> </FONT></B>|<FONT COLOR="#228B22"><B> <FONT COLOR="#B8860B">D</FONT> <B><FONT COLOR="#A020F0">of</FONT></B> t
-</FONT></B></PRE>
+<B><FONT COLOR="#A020F0">datatype</FONT></B> t <B><FONT COLOR="#5F9EA0">=</FONT></B> A <B><FONT COLOR="#5F9EA0">|</FONT></B> B <B><FONT COLOR="#A020F0">of</FONT></B> u <B><FONT COLOR="#5F9EA0">*</FONT></B> <B><FONT COLOR="#228B22">real</FONT></B>
+<B><FONT COLOR="#A020F0">and</FONT></B> u <B><FONT COLOR="#5F9EA0">=</FONT></B> C <B><FONT COLOR="#5F9EA0">|</FONT></B> D <B><FONT COLOR="#A020F0">of</FONT></B> t
+</PRE>
</p>
<p>
@@ -260,11 +266,11 @@
</p>
<pre class=code>
-<B><FONT COLOR="#0000FF">structure</FONT></B> Bad: <B><FONT COLOR="#0000FF">sig</FONT></B> <B><FONT COLOR="#A020F0">eqtype</FONT></B><FONT COLOR="#228B22"><B> t </FONT></B><B><FONT COLOR="#A020F0">eqtype</FONT></B><FONT COLOR="#228B22"><B> u </FONT></B><B><FONT COLOR="#0000FF">end</FONT></B> =
- <B><FONT COLOR="#0000FF">struct</FONT></B>
- <B><FONT COLOR="#A020F0">datatype</FONT></B><FONT COLOR="#228B22"><B> t </FONT></B>=<FONT COLOR="#228B22"><B> <FONT COLOR="#B8860B">A</FONT> </FONT></B>|<FONT COLOR="#228B22"><B> <FONT COLOR="#B8860B">B</FONT> <B><FONT COLOR="#A020F0">of</FONT></B> u * real
- </FONT></B><B><FONT COLOR="#A020F0">and</FONT></B><FONT COLOR="#228B22"><B> u </FONT></B>=<FONT COLOR="#228B22"><B> <FONT COLOR="#B8860B">C</FONT> </FONT></B>|<FONT COLOR="#228B22"><B> <FONT COLOR="#B8860B">D</FONT> <B><FONT COLOR="#A020F0">of</FONT></B> t
- </FONT></B><B><FONT COLOR="#0000FF">end</FONT></B>
+<B><FONT COLOR="#5F9EA0">structure</FONT></B> Bad: <B><FONT COLOR="#5F9EA0">sig</FONT></B> <B><FONT COLOR="#A020F0">eqtype</FONT></B> t <B><FONT COLOR="#A020F0">eqtype</FONT></B> u <B><FONT COLOR="#A020F0">end</FONT></B> <B><FONT COLOR="#5F9EA0">=</FONT></B>
+ <B><FONT COLOR="#5F9EA0">struct</FONT></B>
+ <B><FONT COLOR="#A020F0">datatype</FONT></B> t <B><FONT COLOR="#5F9EA0">=</FONT></B> A <B><FONT COLOR="#5F9EA0">|</FONT></B> B <B><FONT COLOR="#A020F0">of</FONT></B> u <B><FONT COLOR="#5F9EA0">*</FONT></B> <B><FONT COLOR="#228B22">real</FONT></B>
+ <B><FONT COLOR="#A020F0">and</FONT></B> u <B><FONT COLOR="#5F9EA0">=</FONT></B> C <B><FONT COLOR="#5F9EA0">|</FONT></B> D <B><FONT COLOR="#A020F0">of</FONT></B> t
+ <B><FONT COLOR="#A020F0">end</FONT></B>
</PRE>
<p>
Modified: mlton/branches/on-20050822-x86_64-branch/doc/guide/Alice
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/doc/guide/Alice 2006-11-07 01:53:06 UTC (rev 4810)
+++ mlton/branches/on-20050822-x86_64-branch/doc/guide/Alice 2006-11-07 03:45:26 UTC (rev 4811)
@@ -18,6 +18,12 @@
<body lang="en" dir="ltr">
+<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+_uacct = "UA-833377-1";
+urchinTracker();
+</script>
<table bgcolor = lightblue cellspacing = 0 style = "border: 0px;" width = 100%>
<tr>
<td style = "
@@ -25,7 +31,7 @@
color: darkblue;
font-size: 150%;
text-align: left;">
- <a class = mltona href="Home">MLton 20051202</a>
+ <a class = mltona href="Home">MLton 20061025</a>
<td style = "
border: 0px;
font-size: 150%;
Modified: mlton/branches/on-20050822-x86_64-branch/doc/guide/AllocateRegisters
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/doc/guide/AllocateRegisters 2006-11-07 01:53:06 UTC (rev 4810)
+++ mlton/branches/on-20050822-x86_64-branch/doc/guide/AllocateRegisters 2006-11-07 03:45:26 UTC (rev 4811)
@@ -18,6 +18,12 @@
<body lang="en" dir="ltr">
+<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+_uacct = "UA-833377-1";
+urchinTracker();
+</script>
<table bgcolor = lightblue cellspacing = 0 style = "border: 0px;" width = 100%>
<tr>
<td style = "
@@ -25,7 +31,7 @@
color: darkblue;
font-size: 150%;
text-align: left;">
- <a class = mltona href="Home">MLton 20051202</a>
+ <a class = mltona href="Home">MLton 20061025</a>
<td style = "
border: 0px;
font-size: 150%;
@@ -55,9 +61,9 @@
</p>
<h2 id="head-8781d615fd77be9578225c40ac67b9471394cced">Implementation</h2>
-<a href = "http://mlton.org/cgi-bin/viewsvn.cgi/mlton/tags/on-20051202-release/mlton/backend/allocate-registers.sig?view=markup"><img src="moin-www.png" alt="[WWW]" height="11" width="11">allocate-registers.sig</a>
+<a href = "http://mlton.org/cgi-bin/viewsvn.cgi/mlton/tags/on-20061025-release/mlton/backend/allocate-registers.sig?view=markup"><img src="moin-www.png" alt="[WWW]" height="11" width="11">allocate-registers.sig</a>
-<a href = "http://mlton.org/cgi-bin/viewsvn.cgi/mlton/tags/on-20051202-release/mlton/backend/allocate-registers.fun?view=markup"><img src="moin-www.png" alt="[WWW]" height="11" width="11">allocate-registers.fun</a>
+<a href = "http://mlton.org/cgi-bin/viewsvn.cgi/mlton/tags/on-20061025-release/mlton/backend/allocate-registers.fun?view=markup"><img src="moin-www.png" alt="[WWW]" height="11" width="11">allocate-registers.fun</a>
<h2 id="head-35ec00231a68203708e39f0e2cc10b50c6bf62de">Details and Notes</h2>
</div>
Modified: mlton/branches/on-20050822-x86_64-branch/doc/guide/AndreiFormiga
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/doc/guide/AndreiFormiga 2006-11-07 01:53:06 UTC (rev 4810)
+++ mlton/branches/on-20050822-x86_64-branch/doc/guide/AndreiFormiga 2006-11-07 03:45:26 UTC (rev 4811)
@@ -18,6 +18,12 @@
<body lang="en" dir="ltr">
+<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+_uacct = "UA-833377-1";
+urchinTracker();
+</script>
<table bgcolor = lightblue cellspacing = 0 style = "border: 0px;" width = 100%>
<tr>
<td style = "
@@ -25,7 +31,7 @@
color: darkblue;
font-size: 150%;
text-align: left;">
- <a class = mltona href="Home">MLton 20051202</a>
+ <a class = mltona href="Home">MLton 20061025</a>
<td style = "
border: 0px;
font-size: 150%;
Copied: mlton/branches/on-20050822-x86_64-branch/doc/guide/ArrayLiteral (from rev 4805, mlton/trunk/doc/guide/ArrayLiteral)
Modified: mlton/branches/on-20050822-x86_64-branch/doc/guide/BasisLibrary
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/doc/guide/BasisLibrary 2006-11-07 01:53:06 UTC (rev 4810)
+++ mlton/branches/on-20050822-x86_64-branch/doc/guide/BasisLibrary 2006-11-07 03:45:26 UTC (rev 4811)
@@ -18,6 +18,12 @@
<body lang="en" dir="ltr">
+<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+_uacct = "UA-833377-1";
+urchinTracker();
+</script>
<table bgcolor = lightblue cellspacing = 0 style = "border: 0px;" width = 100%>
<tr>
<td style = "
@@ -25,7 +31,7 @@
color: darkblue;
font-size: 150%;
text-align: left;">
- <a class = mltona href="Home">MLton 20051202</a>
+ <a class = mltona href="Home">MLton 20061025</a>
<td style = "
border: 0px;
font-size: 150%;
Modified: mlton/branches/on-20050822-x86_64-branch/doc/guide/Bug
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/doc/guide/Bug 2006-11-07 01:53:06 UTC (rev 4810)
+++ mlton/branches/on-20050822-x86_64-branch/doc/guide/Bug 2006-11-07 03:45:26 UTC (rev 4811)
@@ -18,6 +18,12 @@
<body lang="en" dir="ltr">
+<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+_uacct = "UA-833377-1";
+urchinTracker();
+</script>
<table bgcolor = lightblue cellspacing = 0 style = "border: 0px;" width = 100%>
<tr>
<td style = "
@@ -25,7 +31,7 @@
color: darkblue;
font-size: 150%;
text-align: left;">
- <a class = mltona href="Home">MLton 20051202</a>
+ <a class = mltona href="Home">MLton 20061025</a>
<td style = "
border: 0px;
font-size: 150%;
@@ -60,6 +66,11 @@
<li>
<p>
+ <a href="Bugs20051202">Bugs20051202</a>
+</p>
+</li>
+ <li>
+<p>
<a href="Bugs20041109">Bugs20041109</a>
</p>
</li>
@@ -71,5 +82,5 @@
<p>
<hr>
-Last edited on 2005-11-30 23:04:27 by <span title="ppp-71-139-183-221.dsl.snfc21.pacbell.net"><a href="StephenWeeks">StephenWeeks</a></span>.
+Last edited on 2006-08-10 12:26:17 by <span title="www-cache2.hel.fi.ssh.com"><a href="VesaKarvonen">VesaKarvonen</a></span>.
</body></html>
Modified: mlton/branches/on-20050822-x86_64-branch/doc/guide/Bugs20041109
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/doc/guide/Bugs20041109 2006-11-07 01:53:06 UTC (rev 4810)
+++ mlton/branches/on-20050822-x86_64-branch/doc/guide/Bugs20041109 2006-11-07 03:45:26 UTC (rev 4811)
@@ -18,6 +18,12 @@
<body lang="en" dir="ltr">
+<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+_uacct = "UA-833377-1";
+urchinTracker();
+</script>
<table bgcolor = lightblue cellspacing = 0 style = "border: 0px;" width = 100%>
<tr>
...
[truncated message content] |
|
From: Matthew F. <fl...@ml...> - 2006-11-06 17:53:23
|
Add uniquifying suffix for make-pdf-guide temp directory; prevent errors with parallel executions of 'make docs' ---------------------------------------------------------------------- U mlton/trunk/bin/make-pdf-guide ---------------------------------------------------------------------- Modified: mlton/trunk/bin/make-pdf-guide =================================================================== --- mlton/trunk/bin/make-pdf-guide 2006-11-07 01:40:08 UTC (rev 4809) +++ mlton/trunk/bin/make-pdf-guide 2006-11-07 01:53:06 UTC (rev 4810) @@ -29,7 +29,7 @@ pdf='mlton-guide.pdf' script='.script' titlepage='title.html' -tmp='/tmp/mlton-guide' +tmp="/tmp/mlton-guide.$$" version=`date +%Y%m%d` rm -rf $tmp |
|
From: Matthew F. <fl...@ml...> - 2006-11-06 17:40:28
|
Fix bootstrap bug introduced by r4778; the 'libraries' target attempts to type-check mlrisc-lib, which is no longer included in the libraries
----------------------------------------------------------------------
U mlton/trunk/Makefile
----------------------------------------------------------------------
Modified: mlton/trunk/Makefile
===================================================================
--- mlton/trunk/Makefile 2006-11-06 23:03:00 UTC (rev 4808)
+++ mlton/trunk/Makefile 2006-11-07 01:40:08 UTC (rev 4809)
@@ -169,7 +169,7 @@
# do not change "make" to "$(MAKE)" in the following line
cd $(BSDSRC)/package/freebsd && MAINTAINER_MODE=yes make build-package
-LIBRARIES = ckit-lib cml mlnlffi-lib mlrisc-lib mlyacc-lib smlnj-lib
+LIBRARIES = ckit-lib cml mlnlffi-lib mlyacc-lib smlnj-lib
.PHONY: libraries-no-check
libraries-no-check:
|
|
From: Matthew F. <fl...@ml...> - 2006-11-06 15:03:20
|
Added MLNLFFI platform memory file for amd64-*bsd platforms. ---------------------------------------------------------------------- A mlton/trunk/lib/mlnlffi/memory/platform/memory.amd64-freebsd.mlb A mlton/trunk/lib/mlnlffi/memory/platform/memory.amd64-netbsd.mlb A mlton/trunk/lib/mlnlffi/memory/platform/memory.amd64-openbsd.mlb ---------------------------------------------------------------------- Copied: mlton/trunk/lib/mlnlffi/memory/platform/memory.amd64-freebsd.mlb (from rev 4805, mlton/trunk/lib/mlnlffi/memory/platform/memory.x86-freebsd.mlb) Copied: mlton/trunk/lib/mlnlffi/memory/platform/memory.amd64-netbsd.mlb (from rev 4805, mlton/trunk/lib/mlnlffi/memory/platform/memory.x86-netbsd.mlb) Copied: mlton/trunk/lib/mlnlffi/memory/platform/memory.amd64-openbsd.mlb (from rev 4805, mlton/trunk/lib/mlnlffi/memory/platform/memory.x86-openbsd.mlb) |
|
From: Matthew F. <fl...@ml...> - 2006-11-06 13:56:58
|
Added MLNLFFI platform memory file for amd64-linux. ---------------------------------------------------------------------- A mlton/trunk/lib/mlnlffi/memory/platform/memory.amd64-linux.mlb ---------------------------------------------------------------------- Added: mlton/trunk/lib/mlnlffi/memory/platform/memory.amd64-linux.mlb =================================================================== --- mlton/trunk/lib/mlnlffi/memory/platform/memory.amd64-linux.mlb 2006-11-06 21:52:55 UTC (rev 4806) +++ mlton/trunk/lib/mlnlffi/memory/platform/memory.amd64-linux.mlb 2006-11-06 21:56:55 UTC (rev 4807) @@ -0,0 +1 @@ +../memory.32bit-unix.mlb |
|
From: Matthew F. <fl...@ml...> - 2006-11-06 13:53:13
|
Added PHONY 'patch' target for smlnj-lib and ckit-lib ---------------------------------------------------------------------- U mlton/trunk/lib/ckit-lib/Makefile U mlton/trunk/lib/mlrisc-lib/Makefile U mlton/trunk/lib/smlnj-lib/Makefile ---------------------------------------------------------------------- Modified: mlton/trunk/lib/ckit-lib/Makefile =================================================================== --- mlton/trunk/lib/ckit-lib/Makefile 2006-11-05 20:58:01 UTC (rev 4805) +++ mlton/trunk/lib/ckit-lib/Makefile 2006-11-06 21:52:55 UTC (rev 4806) @@ -19,3 +19,11 @@ .PHONY: clean clean: ../../bin/clean + +.PHONY: patch +patch: + mv ckit ckit-mlton + gzip -dc ckit.tgz | tar xf - + diff -Naur ckit ckit-mlton >ckit.patch || exit 0 + rm -rf ckit + mv ckit-mlton ckit Modified: mlton/trunk/lib/mlrisc-lib/Makefile =================================================================== --- mlton/trunk/lib/mlrisc-lib/Makefile 2006-11-05 20:58:01 UTC (rev 4805) +++ mlton/trunk/lib/mlrisc-lib/Makefile 2006-11-06 21:52:55 UTC (rev 4806) @@ -13,7 +13,7 @@ gzip -dc MLRISC.tgz | tar xf - chmod -R a+r MLRISC chmod -R g-s MLRISC - patch -p0 <MLRISC.patch + patch -p0 < MLRISC.patch .PHONY: clean clean: @@ -26,4 +26,3 @@ diff -Naur MLRISC MLRISC-mlton >MLRISC.patch || exit 0 rm -rf MLRISC mv MLRISC-mlton MLRISC - Modified: mlton/trunk/lib/smlnj-lib/Makefile =================================================================== --- mlton/trunk/lib/smlnj-lib/Makefile 2006-11-05 20:58:01 UTC (rev 4805) +++ mlton/trunk/lib/smlnj-lib/Makefile 2006-11-06 21:52:55 UTC (rev 4806) @@ -20,3 +20,11 @@ .PHONY: clean clean: ../../bin/clean + +.PHONY: patch +patch: + mv smlnj-lib smlnj-lib-mlton + gzip -dc smlnj-lib.tgz | tar xf - + diff -Naur smlnj-lib smlnj-lib-mlton >smlnj-lib.patch || exit 0 + rm -rf smlnj-lib + mv smlnj-lib-mlton smlnj-lib |
|
From: Matthew F. <fl...@ml...> - 2006-11-05 12:58:07
|
Include basis-ffi.h in sources ---------------------------------------------------------------------- _U mlton/branches/on-20050822-x86_64-branch/runtime/ U mlton/branches/on-20050822-x86_64-branch/runtime/.ignore A mlton/branches/on-20050822-x86_64-branch/runtime/basis-ffi.h ---------------------------------------------------------------------- Property changes on: mlton/branches/on-20050822-x86_64-branch/runtime ___________________________________________________________________ Name: svn:ignore - *.a gdtoa runtime.c basis-ffi.h c-types.h ml-types.h + *.a gdtoa runtime.c c-types.h ml-types.h Modified: mlton/branches/on-20050822-x86_64-branch/runtime/.ignore =================================================================== --- mlton/branches/on-20050822-x86_64-branch/runtime/.ignore 2006-11-05 15:31:10 UTC (rev 4804) +++ mlton/branches/on-20050822-x86_64-branch/runtime/.ignore 2006-11-05 20:58:01 UTC (rev 4805) @@ -1,6 +1,5 @@ *.a gdtoa runtime.c -basis-ffi.h c-types.h ml-types.h Added: mlton/branches/on-20050822-x86_64-branch/runtime/basis-ffi.h =================================================================== --- mlton/branches/on-20050822-x86_64-branch/runtime/basis-ffi.h 2006-11-05 15:31:10 UTC (rev 4804) +++ mlton/branches/on-20050822-x86_64-branch/runtime/basis-ffi.h 2006-11-05 20:58:01 UTC (rev 4805) @@ -0,0 +1,1151 @@ +/* This file is automatically generated. Do not edit. */ + + +#ifndef _MLTON_BASIS_FFI_H_ + +#define _MLTON_BASIS_FFI_H_ + +extern C_Int_t CommandLine_argc; +extern C_StringArray_t CommandLine_argv; +extern C_String_t CommandLine_commandName; +C_String_t Cygwin_toFullWindowsPath(NullString8_t); +C_Errno_t(C_Int_t) Date_gmTime(Ref(C_Time_t)); +C_Double_t Date_localOffset(void); +C_Errno_t(C_Int_t) Date_localTime(Ref(C_Time_t)); +C_Errno_t(C_Time_t) Date_mkTime(void); +C_Size_t Date_strfTime(Array(Char8_t),C_Size_t,NullString8_t); +C_Int_t Date_Tm_getHour(void); +C_Int_t Date_Tm_getIsDst(void); +C_Int_t Date_Tm_getMDay(void); +C_Int_t Date_Tm_getMin(void); +C_Int_t Date_Tm_getMon(void); +C_Int_t Date_Tm_getSec(void); +C_Int_t Date_Tm_getWDay(void); +C_Int_t Date_Tm_getYDay(void); +C_Int_t Date_Tm_getYear(void); +void Date_Tm_setHour(C_Int_t); +void Date_Tm_setIsDst(C_Int_t); +void Date_Tm_setMDay(C_Int_t); +void Date_Tm_setMin(C_Int_t); +void Date_Tm_setMon(C_Int_t); +void Date_Tm_setSec(C_Int_t); +void Date_Tm_setWDay(C_Int_t); +void Date_Tm_setYDay(C_Int_t); +void Date_Tm_setYear(C_Int_t); +extern const C_Int_t IEEEReal_FloatClass_FP_INFINITE; +extern const C_Int_t IEEEReal_FloatClass_FP_NAN; +extern const C_Int_t IEEEReal_FloatClass_FP_NORMAL; +extern const C_Int_t IEEEReal_FloatClass_FP_SUBNORMAL; +extern const C_Int_t IEEEReal_FloatClass_FP_ZERO; +C_Int_t IEEEReal_getRoundingMode(void); +extern const C_Int_t IEEEReal_RoundingMode_FE_DOWNWARD; +extern const C_Int_t IEEEReal_RoundingMode_FE_NOSUPPORT; +extern const C_Int_t IEEEReal_RoundingMode_FE_TONEAREST; +extern const C_Int_t IEEEReal_RoundingMode_FE_TOWARDZERO; +extern const C_Int_t IEEEReal_RoundingMode_FE_UPWARD; +void IEEEReal_setRoundingMode(C_Int_t); +__attribute__((noreturn)) void MLton_bug(NullString8_t); +extern const C_Int_t MLton_Itimer_PROF; +extern const C_Int_t MLton_Itimer_REAL; +C_Errno_t(C_Int_t) MLton_Itimer_set(C_Int_t,C_Time_t,C_SUSeconds_t,C_Time_t,C_SUSeconds_t); +extern const C_Int_t MLton_Itimer_VIRTUAL; +C_Errno_t(C_PId_t) MLton_Process_cwait(C_PId_t,Ref(C_Status_t)); +C_Errno_t(C_Int_t) MLton_Process_spawne(NullString8_t,String8_t,Array(C_Pointer_t),Vector(C_Size_t),String8_t,Array(C_Pointer_t),Vector(C_Size_t)); +C_Errno_t(C_Int_t) MLton_Process_spawnp(NullString8_t,String8_t,Array(C_Pointer_t),Vector(C_Size_t)); +extern const C_Int_t MLton_Rlimit_AS; +extern const C_Int_t MLton_Rlimit_CORE; +extern const C_Int_t MLton_Rlimit_CPU; +extern const C_Int_t MLton_Rlimit_DATA; +extern const C_Int_t MLton_Rlimit_FSIZE; +C_Errno_t(C_Int_t) MLton_Rlimit_get(C_Int_t); +C_RLim_t MLton_Rlimit_getHard(void); +C_RLim_t MLton_Rlimit_getSoft(void); +extern const C_RLim_t MLton_Rlimit_INFINITY; +extern const C_Int_t MLton_Rlimit_NOFILE; +C_Errno_t(C_Int_t) MLton_Rlimit_set(C_Int_t,C_RLim_t,C_RLim_t); +extern const C_Int_t MLton_Rlimit_STACK; +C_Time_t MLton_Rusage_children_stime_sec(void); +C_SUSeconds_t MLton_Rusage_children_stime_usec(void); +C_Time_t MLton_Rusage_children_utime_sec(void); +C_SUSeconds_t MLton_Rusage_children_utime_usec(void); +C_Time_t MLton_Rusage_gc_stime_sec(void); +C_SUSeconds_t MLton_Rusage_gc_stime_usec(void); +C_Time_t MLton_Rusage_gc_utime_sec(void); +C_SUSeconds_t MLton_Rusage_gc_utime_usec(void); +void MLton_Rusage_getrusage(void); +C_Time_t MLton_Rusage_self_stime_sec(void); +C_SUSeconds_t MLton_Rusage_self_stime_usec(void); +C_Time_t MLton_Rusage_self_utime_sec(void); +C_SUSeconds_t MLton_Rusage_self_utime_usec(void); +void MLton_Syslog_closelog(void); +extern const C_Int_t MLton_Syslog_Facility_LOG_AUTH; +extern const C_Int_t MLton_Syslog_Facility_LOG_CRON; +extern const C_Int_t MLton_Syslog_Facility_LOG_DAEMON; +extern const C_Int_t MLton_Syslog_Facility_LOG_KERN; +extern const C_Int_t MLton_Syslog_Facility_LOG_LOCAL0; +extern const C_Int_t MLton_Syslog_Facility_LOG_LOCAL1; +extern const C_Int_t MLton_Syslog_Facility_LOG_LOCAL2; +extern const C_Int_t MLton_Syslog_Facility_LOG_LOCAL3; +extern const C_Int_t MLton_Syslog_Facility_LOG_LOCAL4; +extern const C_Int_t MLton_Syslog_Facility_LOG_LOCAL5; +extern const C_Int_t MLton_Syslog_Facility_LOG_LOCAL6; +extern const C_Int_t MLton_Syslog_Facility_LOG_LOCAL7; +extern const C_Int_t MLton_Syslog_Facility_LOG_LPR; +extern const C_Int_t MLton_Syslog_Facility_LOG_MAIL; +extern const C_Int_t MLton_Syslog_Facility_LOG_NEWS; +extern const C_Int_t MLton_Syslog_Facility_LOG_USER; +extern const C_Int_t MLton_Syslog_Facility_LOG_UUCP; +extern const C_Int_t MLton_Syslog_Logopt_LOG_CONS; +extern const C_Int_t MLton_Syslog_Logopt_LOG_NDELAY; +extern const C_Int_t MLton_Syslog_Logopt_LOG_NOWAIT; +extern const C_Int_t MLton_Syslog_Logopt_LOG_ODELAY; +extern const C_Int_t MLton_Syslog_Logopt_LOG_PID; +void MLton_Syslog_openlog(NullString8_t,C_Int_t,C_Int_t); +extern const C_Int_t MLton_Syslog_Severity_LOG_ALERT; +extern const C_Int_t MLton_Syslog_Severity_LOG_CRIT; +extern const C_Int_t MLton_Syslog_Severity_LOG_DEBUG; +extern const C_Int_t MLton_Syslog_Severity_LOG_EMERG; +extern const C_Int_t MLton_Syslog_Severity_LOG_ERR; +extern const C_Int_t MLton_Syslog_Severity_LOG_INFO; +extern const C_Int_t MLton_Syslog_Severity_LOG_NOTICE; +extern const C_Int_t MLton_Syslog_Severity_LOG_WARNING; +void MLton_Syslog_syslog(C_Int_t,NullString8_t); +Word32_t Net_htonl(Word32_t); +Word16_t Net_htons(Word16_t); +Word32_t Net_ntohl(Word32_t); +Word16_t Net_ntohs(Word16_t); +C_Int_t NetHostDB_getByAddress(Vector(Word8_t),C_Socklen_t); +C_Int_t NetHostDB_getByName(NullString8_t); +void NetHostDB_getEntryAddrsN(C_Int_t,Array(Word8_t)); +C_Int_t NetHostDB_getEntryAddrsNum(void); +C_Int_t NetHostDB_getEntryAddrType(void); +C_String_t NetHostDB_getEntryAliasesN(C_Int_t); +C_Int_t NetHostDB_getEntryAliasesNum(void); +C_Int_t NetHostDB_getEntryLength(void); +C_String_t NetHostDB_getEntryName(void); +C_Errno_t(C_Int_t) NetHostDB_getHostName(Array(Char8_t),C_Size_t); +extern const C_Int_t NetHostDB_INADDR_ANY; +extern const C_Size_t NetHostDB_inAddrSize; +C_Int_t NetProtDB_getByName(NullString8_t); +C_Int_t NetProtDB_getByNumber(C_Int_t); +C_String_t NetProtDB_getEntryAliasesN(C_Int_t); +C_Int_t NetProtDB_getEntryAliasesNum(void); +C_String_t NetProtDB_getEntryName(void); +C_Int_t NetProtDB_getEntryProto(void); +C_Int_t NetServDB_getByName(NullString8_t,NullString8_t); +C_Int_t NetServDB_getByNameNull(NullString8_t); +C_Int_t NetServDB_getByPort(C_Int_t,NullString8_t); +C_Int_t NetServDB_getByPortNull(C_Int_t); +C_String_t NetServDB_getEntryAliasesN(C_Int_t); +C_Int_t NetServDB_getEntryAliasesNum(void); +C_String_t NetServDB_getEntryName(void); +C_Int_t NetServDB_getEntryPort(void); +C_String_t NetServDB_getEntryProto(void); +C_Errno_t(C_Int_t) OS_IO_poll(Vector(C_Fd_t),Vector(C_Short_t),C_NFds_t,C_Int_t,Array(C_Short_t)); +extern const C_Short_t OS_IO_POLLIN; +extern const C_Short_t OS_IO_POLLOUT; +extern const C_Short_t OS_IO_POLLPRI; +Real32_t PackReal32_subArr(Array(Word8_t),C_Ptrdiff_t); +Real32_t PackReal32_subArrRev(Array(Word8_t),C_Ptrdiff_t); +Real32_t PackReal32_subVec(Vector(Word8_t),C_Ptrdiff_t); +Real32_t PackReal32_subVecRev(Vector(Word8_t),C_Ptrdiff_t); +void PackReal32_update(Array(Word8_t),C_Ptrdiff_t,Real32_t); +void PackReal32_updateRev(Array(Word8_t),C_Ptrdiff_t,Real32_t); +Real64_t PackReal64_subArr(Array(Word8_t),C_Ptrdiff_t); +Real64_t PackReal64_subArrRev(Array(Word8_t),C_Ptrdiff_t); +Real64_t PackReal64_subVec(Vector(Word8_t),C_Ptrdiff_t); +Real64_t PackReal64_subVecRev(Vector(Word8_t),C_Ptrdiff_t); +void PackReal64_update(Array(Word8_t),C_Ptrdiff_t,Real64_t); +void PackReal64_updateRev(Array(Word8_t),C_Ptrdiff_t,Real64_t); +Word16_t PackWord16_subArr(Array(Word8_t),C_Ptrdiff_t); +Word16_t PackWord16_subArrRev(Array(Word8_t),C_Ptrdiff_t); +Word16_t PackWord16_subVec(Vector(Word8_t),C_Ptrdiff_t); +Word16_t PackWord16_subVecRev(Vector(Word8_t),C_Ptrdiff_t); +void PackWord16_update(Array(Word8_t),C_Ptrdiff_t,Word16_t); +void PackWord16_updateRev(Array(Word8_t),C_Ptrdiff_t,Word16_t); +Word32_t PackWord32_subArr(Array(Word8_t),C_Ptrdiff_t); +Word32_t PackWord32_subArrRev(Array(Word8_t),C_Ptrdiff_t); +Word32_t PackWord32_subVec(Vector(Word8_t),C_Ptrdiff_t); +Word32_t PackWord32_subVecRev(Vector(Word8_t),C_Ptrdiff_t); +void PackWord32_update(Array(Word8_t),C_Ptrdiff_t,Word32_t); +void PackWord32_updateRev(Array(Word8_t),C_Ptrdiff_t,Word32_t); +Word64_t PackWord64_subArr(Array(Word8_t),C_Ptrdiff_t); +Word64_t PackWord64_subArrRev(Array(Word8_t),C_Ptrdiff_t); +Word64_t PackWord64_subVec(Vector(Word8_t),C_Ptrdiff_t); +Word64_t PackWord64_subVecRev(Vector(Word8_t),C_Ptrdiff_t); +void PackWord64_update(Array(Word8_t),C_Ptrdiff_t,Word64_t); +void PackWord64_updateRev(Array(Word8_t),C_Ptrdiff_t,Word64_t); +Word8_t PackWord8_subArr(Array(Word8_t),C_Ptrdiff_t); +Word8_t PackWord8_subArrRev(Array(Word8_t),C_Ptrdiff_t); +Word8_t PackWord8_subVec(Vector(Word8_t),C_Ptrdiff_t); +Word8_t PackWord8_subVecRev(Vector(Word8_t),C_Ptrdiff_t); +void PackWord8_update(Array(Word8_t),C_Ptrdiff_t,Word8_t); +void PackWord8_updateRev(Array(Word8_t),C_Ptrdiff_t,Word8_t); +void Posix_Error_clearErrno(void); +extern const C_Int_t Posix_Error_E2BIG; +extern const C_Int_t Posix_Error_EACCES; +extern const C_Int_t Posix_Error_EADDRINUSE; +extern const C_Int_t Posix_Error_EADDRNOTAVAIL; +extern const C_Int_t Posix_Error_EAFNOSUPPORT; +extern const C_Int_t Posix_Error_EAGAIN; +extern const C_Int_t Posix_Error_EALREADY; +extern const C_Int_t Posix_Error_EBADF; +extern const C_Int_t Posix_Error_EBADMSG; +extern const C_Int_t Posix_Error_EBUSY; +extern const C_Int_t Posix_Error_ECANCELED; +extern const C_Int_t Posix_Error_ECHILD; +extern const C_Int_t Posix_Error_ECONNABORTED; +extern const C_Int_t Posix_Error_ECONNREFUSED; +extern const C_Int_t Posix_Error_ECONNRESET; +extern const C_Int_t Posix_Error_EDEADLK; +extern const C_Int_t Posix_Error_EDESTADDRREQ; +extern const C_Int_t Posix_Error_EDOM; +extern const C_Int_t Posix_Error_EDQUOT; +extern const C_Int_t Posix_Error_EEXIST; +extern const C_Int_t Posix_Error_EFAULT; +extern const C_Int_t Posix_Error_EFBIG; +extern const C_Int_t Posix_Error_EHOSTUNREACH; +extern const C_Int_t Posix_Error_EIDRM; +extern const C_Int_t Posix_Error_EILSEQ; +extern const C_Int_t Posix_Error_EINPROGRESS; +extern const C_Int_t Posix_Error_EINTR; +extern const C_Int_t Posix_Error_EINVAL; +extern const C_Int_t Posix_Error_EIO; +extern const C_Int_t Posix_Error_EISCONN; +extern const C_Int_t Posix_Error_EISDIR; +extern const C_Int_t Posix_Error_ELOOP; +extern const C_Int_t Posix_Error_EMFILE; +extern const C_Int_t Posix_Error_EMLINK; +extern const C_Int_t Posix_Error_EMSGSIZE; +extern const C_Int_t Posix_Error_EMULTIHOP; +extern const C_Int_t Posix_Error_ENAMETOOLONG; +extern const C_Int_t Posix_Error_ENETDOWN; +extern const C_Int_t Posix_Error_ENETRESET; +extern const C_Int_t Posix_Error_ENETUNREACH; +extern const C_Int_t Posix_Error_ENFILE; +extern const C_Int_t Posix_Error_ENOBUFS; +extern const C_Int_t Posix_Error_ENODATA; +extern const C_Int_t Posix_Error_ENODEV; +extern const C_Int_t Posix_Error_ENOENT; +extern const C_Int_t Posix_Error_ENOEXEC; +extern const C_Int_t Posix_Error_ENOLCK; +extern const C_Int_t Posix_Error_ENOLINK; +extern const C_Int_t Posix_Error_ENOMEM; +extern const C_Int_t Posix_Error_ENOMSG; +extern const C_Int_t Posix_Error_ENOPROTOOPT; +extern const C_Int_t Posix_Error_ENOSPC; +extern const C_Int_t Posix_Error_ENOSR; +extern const C_Int_t Posix_Error_ENOSTR; +extern const C_Int_t Posix_Error_ENOSYS; +extern const C_Int_t Posix_Error_ENOTCONN; +extern const C_Int_t Posix_Error_ENOTDIR; +extern const C_Int_t Posix_Error_ENOTEMPTY; +extern const C_Int_t Posix_Error_ENOTSOCK; +extern const C_Int_t Posix_Error_ENOTSUP; +extern const C_Int_t Posix_Error_ENOTTY; +extern const C_Int_t Posix_Error_ENXIO; +extern const C_Int_t Posix_Error_EOPNOTSUPP; +extern const C_Int_t Posix_Error_EOVERFLOW; +extern const C_Int_t Posix_Error_EPERM; +extern const C_Int_t Posix_Error_EPIPE; +extern const C_Int_t Posix_Error_EPROTO; +extern const C_Int_t Posix_Error_EPROTONOSUPPORT; +extern const C_Int_t Posix_Error_EPROTOTYPE; +extern const C_Int_t Posix_Error_ERANGE; +extern const C_Int_t Posix_Error_EROFS; +extern const C_Int_t Posix_Error_ESPIPE; +extern const C_Int_t Posix_Error_ESRCH; +extern const C_Int_t Posix_Error_ESTALE; +extern const C_Int_t Posix_Error_ETIME; +extern const C_Int_t Posix_Error_ETIMEDOUT; +extern const C_Int_t Posix_Error_ETXTBSY; +extern const C_Int_t Posix_Error_EWOULDBLOCK; +extern const C_Int_t Posix_Error_EXDEV; +C_Int_t Posix_Error_getErrno(void); +C_String_t Posix_Error_strError(C_Int_t); +extern const C_Int_t Posix_FileSys_A_F_OK; +extern const C_Int_t Posix_FileSys_A_R_OK; +extern const C_Int_t Posix_FileSys_A_W_OK; +extern const C_Int_t Posix_FileSys_A_X_OK; +C_Errno_t(C_Int_t) Posix_FileSys_access(NullString8_t,C_Int_t); +C_Errno_t(C_Int_t) Posix_FileSys_chdir(NullString8_t); +C_Errno_t(C_Int_t) Posix_FileSys_chmod(NullString8_t,C_Mode_t); +C_Errno_t(C_Int_t) Posix_FileSys_chown(NullString8_t,C_UId_t,C_GId_t); +C_Errno_t(C_Int_t) Posix_FileSys_Dirstream_closeDir(C_DirP_t); +C_Errno_t(C_DirP_t) Posix_FileSys_Dirstream_openDir(NullString8_t); +C_Errno_t(C_String_t) Posix_FileSys_Dirstream_readDir(C_DirP_t); +void Posix_FileSys_Dirstream_rewindDir(C_DirP_t); +C_Errno_t(C_Int_t) Posix_FileSys_fchdir(C_Fd_t); +C_Errno_t(C_Int_t) Posix_FileSys_fchmod(C_Fd_t,C_Mode_t); +C_Errno_t(C_Int_t) Posix_FileSys_fchown(C_Fd_t,C_UId_t,C_GId_t); +C_Errno_t(C_Long_t) Posix_FileSys_fpathconf(C_Fd_t,C_Int_t); +C_Errno_t(C_Int_t) Posix_FileSys_ftruncate(C_Fd_t,C_Off_t); +C_Errno_t(C_String_t) Posix_FileSys_getcwd(Array(Char8_t),C_Size_t); +C_Errno_t(C_Int_t) Posix_FileSys_link(NullString8_t,NullString8_t); +C_Errno_t(C_Int_t) Posix_FileSys_mkdir(NullString8_t,C_Mode_t); +C_Errno_t(C_Int_t) Posix_FileSys_mkfifo(NullString8_t,C_Mode_t); +extern const C_Int_t Posix_FileSys_O_APPEND; +extern const C_Int_t Posix_FileSys_O_BINARY; +extern const C_Int_t Posix_FileSys_O_CREAT; +extern const C_Int_t Posix_FileSys_O_DSYNC; +extern const C_Int_t Posix_FileSys_O_EXCL; +extern const C_Int_t Posix_FileSys_O_NOCTTY; +extern const C_Int_t Posix_FileSys_O_NONBLOCK; +extern const C_Int_t Posix_FileSys_O_RDONLY; +extern const C_Int_t Posix_FileSys_O_RDWR; +extern const C_Int_t Posix_FileSys_O_RSYNC; +extern const C_Int_t Posix_FileSys_O_SYNC; +extern const C_Int_t Posix_FileSys_O_TEXT; +extern const C_Int_t Posix_FileSys_O_TRUNC; +extern const C_Int_t Posix_FileSys_O_WRONLY; +C_Errno_t(C_Fd_t) Posix_FileSys_open2(NullString8_t,C_Int_t); +C_Errno_t(C_Fd_t) Posix_FileSys_open3(NullString8_t,C_Int_t,C_Mode_t); +C_Errno_t(C_Long_t) Posix_FileSys_pathconf(NullString8_t,C_Int_t); +extern const C_Int_t Posix_FileSys_PC_ALLOC_SIZE_MIN; +extern const C_Int_t Posix_FileSys_PC_ASYNC_IO; +extern const C_Int_t Posix_FileSys_PC_CHOWN_RESTRICTED; +extern const C_Int_t Posix_FileSys_PC_FILESIZEBITS; +extern const C_Int_t Posix_FileSys_PC_LINK_MAX; +extern const C_Int_t Posix_FileSys_PC_MAX_CANON; +extern const C_Int_t Posix_FileSys_PC_MAX_INPUT; +extern const C_Int_t Posix_FileSys_PC_NAME_MAX; +extern const C_Int_t Posix_FileSys_PC_NO_TRUNC; +extern const C_Int_t Posix_FileSys_PC_PATH_MAX; +extern const C_Int_t Posix_FileSys_PC_PIPE_BUF; +extern const C_Int_t Posix_FileSys_PC_PRIO_IO; +extern const C_Int_t Posix_FileSys_PC_REC_INCR_XFER_SIZE; +extern const C_Int_t Posix_FileSys_PC_REC_MAX_XFER_SIZE; +extern const C_Int_t Posix_FileSys_PC_REC_MIN_XFER_SIZE; +extern const C_Int_t Posix_FileSys_PC_REC_XFER_ALIGN; +extern const C_Int_t Posix_FileSys_PC_SYMLINK_MAX; +extern const C_Int_t Posix_FileSys_PC_SYNC_IO; +extern const C_Int_t Posix_FileSys_PC_TWO_SYMLINKS; +extern const C_Int_t Posix_FileSys_PC_VDISABLE; +C_Errno_t(C_SSize_t) Posix_FileSys_readlink(NullString8_t,Array(Char8_t),C_Size_t); +C_Errno_t(C_Int_t) Posix_FileSys_rename(NullString8_t,NullString8_t); +C_Errno_t(C_Int_t) Posix_FileSys_rmdir(NullString8_t); +extern const C_Mode_t Posix_FileSys_S_IFBLK; +extern const C_Mode_t Posix_FileSys_S_IFCHR; +extern const C_Mode_t Posix_FileSys_S_IFDIR; +extern const C_Mode_t Posix_FileSys_S_IFIFO; +extern const C_Mode_t Posix_FileSys_S_IFLNK; +extern const C_Mode_t Posix_FileSys_S_IFMT; +extern const C_Mode_t Posix_FileSys_S_IFREG; +extern const C_Mode_t Posix_FileSys_S_IFSOCK; +extern const C_Mode_t Posix_FileSys_S_IRGRP; +extern const C_Mode_t Posix_FileSys_S_IROTH; +extern const C_Mode_t Posix_FileSys_S_IRUSR; +extern const C_Mode_t Posix_FileSys_S_IRWXG; +extern const C_Mode_t Posix_FileSys_S_IRWXO; +extern const C_Mode_t Posix_FileSys_S_IRWXU; +extern const C_Mode_t Posix_FileSys_S_ISGID; +extern const C_Mode_t Posix_FileSys_S_ISUID; +extern const C_Mode_t Posix_FileSys_S_ISVTX; +extern const C_Mode_t Posix_FileSys_S_IWGRP; +extern const C_Mode_t Posix_FileSys_S_IWOTH; +extern const C_Mode_t Posix_FileSys_S_IWUSR; +extern const C_Mode_t Posix_FileSys_S_IXGRP; +extern const C_Mode_t Posix_FileSys_S_IXOTH; +extern const C_Mode_t Posix_FileSys_S_IXUSR; +C_Int_t Posix_FileSys_ST_isBlk(C_Mode_t); +C_Int_t Posix_FileSys_ST_isChr(C_Mode_t); +C_Int_t Posix_FileSys_ST_isDir(C_Mode_t); +C_Int_t Posix_FileSys_ST_isFIFO(C_Mode_t); +C_Int_t Posix_FileSys_ST_isLink(C_Mode_t); +C_Int_t Posix_FileSys_ST_isReg(C_Mode_t); +C_Int_t Posix_FileSys_ST_isSock(C_Mode_t); +C_Errno_t(C_Int_t) Posix_FileSys_Stat_fstat(C_Fd_t); +C_Time_t Posix_FileSys_Stat_getATime(void); +C_Time_t Posix_FileSys_Stat_getCTime(void); +C_Dev_t Posix_FileSys_Stat_getDev(void); +C_GId_t Posix_FileSys_Stat_getGId(void); +C_INo_t Posix_FileSys_Stat_getINo(void); +C_Mode_t Posix_FileSys_Stat_getMode(void); +C_Time_t Posix_FileSys_Stat_getMTime(void); +C_NLink_t Posix_FileSys_Stat_getNLink(void); +C_Dev_t Posix_FileSys_Stat_getRDev(void); +C_Off_t Posix_FileSys_Stat_getSize(void); +C_UId_t Posix_FileSys_Stat_getUId(void); +C_Errno_t(C_Int_t) Posix_FileSys_Stat_lstat(NullString8_t); +C_Errno_t(C_Int_t) Posix_FileSys_Stat_stat(NullString8_t); +C_Errno_t(C_Int_t) Posix_FileSys_symlink(NullString8_t,NullString8_t); +C_Errno_t(C_Int_t) Posix_FileSys_truncate(NullString8_t,C_Off_t); +C_Mode_t Posix_FileSys_umask(C_Mode_t); +C_Errno_t(C_Int_t) Posix_FileSys_unlink(NullString8_t); +void Posix_FileSys_Utimbuf_setAcTime(C_Time_t); +void Posix_FileSys_Utimbuf_setModTime(C_Time_t); +C_Errno_t(C_Int_t) Posix_FileSys_Utimbuf_utime(NullString8_t); +C_Errno_t(C_Int_t) Posix_IO_close(C_Fd_t); +C_Errno_t(C_Fd_t) Posix_IO_dup(C_Fd_t); +C_Errno_t(C_Fd_t) Posix_IO_dup2(C_Fd_t,C_Fd_t); +extern const C_Int_t Posix_IO_F_DUPFD; +extern const C_Int_t Posix_IO_F_GETFD; +extern const C_Int_t Posix_IO_F_GETFL; +extern const C_Int_t Posix_IO_F_GETOWN; +extern const C_Int_t Posix_IO_F_SETFD; +extern const C_Int_t Posix_IO_F_SETFL; +extern const C_Int_t Posix_IO_F_SETOWN; +C_Errno_t(C_Int_t) Posix_IO_fcntl2(C_Fd_t,C_Int_t); +C_Errno_t(C_Int_t) Posix_IO_fcntl3(C_Fd_t,C_Int_t,C_Int_t); +extern const C_Int_t Posix_IO_FD_CLOEXEC; +extern const C_Int_t Posix_IO_FLock_F_GETLK; +extern const C_Short_t Posix_IO_FLock_F_RDLCK; +extern const C_Int_t Posix_IO_FLock_F_SETLK; +extern const C_Int_t Posix_IO_FLock_F_SETLKW; +extern const C_Short_t Posix_IO_FLock_F_UNLCK; +extern const C_Short_t Posix_IO_FLock_F_WRLCK; +C_Errno_t(C_Int_t) Posix_IO_FLock_fcntl(C_Fd_t,C_Int_t); +C_Off_t Posix_IO_FLock_getLen(void); +C_PId_t Posix_IO_FLock_getPId(void); +C_Off_t Posix_IO_FLock_getStart(void); +C_Short_t Posix_IO_FLock_getType(void); +C_Short_t Posix_IO_FLock_getWhence(void); +extern const C_Short_t Posix_IO_FLock_SEEK_CUR; +extern const C_Short_t Posix_IO_FLock_SEEK_END; +extern const C_Short_t Posix_IO_FLock_SEEK_SET; +void Posix_IO_FLock_setLen(C_Off_t); +void Posix_IO_FLock_setPId(C_PId_t); +void Posix_IO_FLock_setStart(C_Off_t); +void Posix_IO_FLock_setType(C_Short_t); +void Posix_IO_FLock_setWhence(C_Short_t); +C_Errno_t(C_Int_t) Posix_IO_fsync(C_Fd_t); +C_Errno_t(C_Off_t) Posix_IO_lseek(C_Fd_t,C_Off_t,C_Int_t); +extern const C_Int_t Posix_IO_O_ACCMODE; +C_Errno_t(C_Int_t) Posix_IO_pipe(Array(C_Fd_t)); +C_Errno_t(C_SSize_t) Posix_IO_readChar8(C_Fd_t,Array(Char8_t),C_Int_t,C_Size_t); +C_Errno_t(C_SSize_t) Posix_IO_readWord8(C_Fd_t,Array(Word8_t),C_Int_t,C_Size_t); +extern const C_Int_t Posix_IO_SEEK_CUR; +extern const C_Int_t Posix_IO_SEEK_END; +extern const C_Int_t Posix_IO_SEEK_SET; +void Posix_IO_setbin(C_Fd_t); +void Posix_IO_settext(C_Fd_t); +C_Errno_t(C_SSize_t) Posix_IO_writeChar8Arr(C_Fd_t,Array(Char8_t),C_Int_t,C_Size_t); +C_Errno_t(C_SSize_t) Posix_IO_writeChar8Vec(C_Fd_t,Vector(Char8_t),C_Int_t,C_Size_t); +C_Errno_t(C_SSize_t) Posix_IO_writeWord8Arr(C_Fd_t,Array(Word8_t),C_Int_t,C_Size_t); +C_Errno_t(C_SSize_t) Posix_IO_writeWord8Vec(C_Fd_t,Vector(Word8_t),C_Int_t,C_Size_t); +C_String_t Posix_ProcEnv_ctermid(void); +extern C_StringArray_t Posix_ProcEnv_environ; +C_GId_t Posix_ProcEnv_getegid(void); +C_String_t Posix_ProcEnv_getenv(NullString8_t); +C_UId_t Posix_ProcEnv_geteuid(void); +C_GId_t Posix_ProcEnv_getgid(void); +C_Errno_t(C_Int_t) Posix_ProcEnv_getgroups(C_Int_t,Array(C_GId_t)); +C_Int_t Posix_ProcEnv_getgroupsN(void); +C_Errno_t(C_String_t) Posix_ProcEnv_getlogin(void); +C_PId_t Posix_ProcEnv_getpgrp(void); +C_PId_t Posix_ProcEnv_getpid(void); +C_PId_t Posix_ProcEnv_getppid(void); +C_UId_t Posix_ProcEnv_getuid(void); +C_Int_t Posix_ProcEnv_isatty(C_Fd_t); +extern const C_Int_t Posix_ProcEnv_SC_2_C_BIND; +extern const C_Int_t Posix_ProcEnv_SC_2_C_DEV; +extern const C_Int_t Posix_ProcEnv_SC_2_CHAR_TERM; +extern const C_Int_t Posix_ProcEnv_SC_2_FORT_DEV; +extern const C_Int_t Posix_ProcEnv_SC_2_FORT_RUN; +extern const C_Int_t Posix_ProcEnv_SC_2_LOCALEDEF; +extern const C_Int_t Posix_ProcEnv_SC_2_PBS; +extern const C_Int_t Posix_ProcEnv_SC_2_PBS_ACCOUNTING; +extern const C_Int_t Posix_ProcEnv_SC_2_PBS_CHECKPOINT; +extern const C_Int_t Posix_ProcEnv_SC_2_PBS_LOCATE; +extern const C_Int_t Posix_ProcEnv_SC_2_PBS_MESSAGE; +extern const C_Int_t Posix_ProcEnv_SC_2_PBS_TRACK; +extern const C_Int_t Posix_ProcEnv_SC_2_SW_DEV; +extern const C_Int_t Posix_ProcEnv_SC_2_UPE; +extern const C_Int_t Posix_ProcEnv_SC_2_VERSION; +extern const C_Int_t Posix_ProcEnv_SC_ADVISORY_INFO; +extern const C_Int_t Posix_ProcEnv_SC_AIO_LISTIO_MAX; +extern const C_Int_t Posix_ProcEnv_SC_AIO_MAX; +extern const C_Int_t Posix_ProcEnv_SC_AIO_PRIO_DELTA_MAX; +extern const C_Int_t Posix_ProcEnv_SC_ARG_MAX; +extern const C_Int_t Posix_ProcEnv_SC_ASYNCHRONOUS_IO; +extern const C_Int_t Posix_ProcEnv_SC_ATEXIT_MAX; +extern const C_Int_t Posix_ProcEnv_SC_BARRIERS; +extern const C_Int_t Posix_ProcEnv_SC_BC_BASE_MAX; +extern const C_Int_t Posix_ProcEnv_SC_BC_DIM_MAX; +extern const C_Int_t Posix_ProcEnv_SC_BC_SCALE_MAX; +extern const C_Int_t Posix_ProcEnv_SC_BC_STRING_MAX; +extern const C_Int_t Posix_ProcEnv_SC_CHILD_MAX; +extern const C_Int_t Posix_ProcEnv_SC_CLK_TCK; +extern const C_Int_t Posix_ProcEnv_SC_CLOCK_SELECTION; +extern const C_Int_t Posix_ProcEnv_SC_COLL_WEIGHTS_MAX; +extern const C_Int_t Posix_ProcEnv_SC_CPUTIME; +extern const C_Int_t Posix_ProcEnv_SC_DELAYTIMER_MAX; +extern const C_Int_t Posix_ProcEnv_SC_EXPR_NEST_MAX; +extern const C_Int_t Posix_ProcEnv_SC_FSYNC; +extern const C_Int_t Posix_ProcEnv_SC_GETGR_R_SIZE_MAX; +extern const C_Int_t Posix_ProcEnv_SC_GETPW_R_SIZE_MAX; +extern const C_Int_t Posix_ProcEnv_SC_HOST_NAME_MAX; +extern const C_Int_t Posix_ProcEnv_SC_IOV_MAX; +extern const C_Int_t Posix_ProcEnv_SC_IPV6; +extern const C_Int_t Posix_ProcEnv_SC_JOB_CONTROL; +extern const C_Int_t Posix_ProcEnv_SC_LINE_MAX; +extern const C_Int_t Posix_ProcEnv_SC_LOGIN_NAME_MAX; +extern const C_Int_t Posix_ProcEnv_SC_MAPPED_FILES; +extern const C_Int_t Posix_ProcEnv_SC_MEMLOCK; +extern const C_Int_t Posix_ProcEnv_SC_MEMLOCK_RANGE; +extern const C_Int_t Posix_ProcEnv_SC_MEMORY_PROTECTION; +extern const C_Int_t Posix_ProcEnv_SC_MESSAGE_PASSING; +extern const C_Int_t Posix_ProcEnv_SC_MONOTONIC_CLOCK; +extern const C_Int_t Posix_ProcEnv_SC_MQ_OPEN_MAX; +extern const C_Int_t Posix_ProcEnv_SC_MQ_PRIO_MAX; +extern const C_Int_t Posix_ProcEnv_SC_NGROUPS_MAX; +extern const C_Int_t Posix_ProcEnv_SC_OPEN_MAX; +extern const C_Int_t Posix_ProcEnv_SC_PAGE_SIZE; +extern const C_Int_t Posix_ProcEnv_SC_PAGESIZE; +extern const C_Int_t Posix_ProcEnv_SC_PRIORITIZED_IO; +extern const C_Int_t Posix_ProcEnv_SC_PRIORITY_SCHEDULING; +extern const C_Int_t Posix_ProcEnv_SC_RAW_SOCKETS; +extern const C_Int_t Posix_ProcEnv_SC_RE_DUP_MAX; +extern const C_Int_t Posix_ProcEnv_SC_READER_WRITER_LOCKS; +extern const C_Int_t Posix_ProcEnv_SC_REALTIME_SIGNALS; +extern const C_Int_t Posix_ProcEnv_SC_REGEXP; +extern const C_Int_t Posix_ProcEnv_SC_RTSIG_MAX; +extern const C_Int_t Posix_ProcEnv_SC_SAVED_IDS; +extern const C_Int_t Posix_ProcEnv_SC_SEM_NSEMS_MAX; +extern const C_Int_t Posix_ProcEnv_SC_SEM_VALUE_MAX; +extern const C_Int_t Posix_ProcEnv_SC_SEMAPHORES; +extern const C_Int_t Posix_ProcEnv_SC_SHARED_MEMORY_OBJECTS; +extern const C_Int_t Posix_ProcEnv_SC_SHELL; +extern const C_Int_t Posix_ProcEnv_SC_SIGQUEUE_MAX; +extern const C_Int_t Posix_ProcEnv_SC_SPAWN; +extern const C_Int_t Posix_ProcEnv_SC_SPIN_LOCKS; +extern const C_Int_t Posix_ProcEnv_SC_SPORADIC_SERVER; +extern const C_Int_t Posix_ProcEnv_SC_SS_REPL_MAX; +extern const C_Int_t Posix_ProcEnv_SC_STREAM_MAX; +extern const C_Int_t Posix_ProcEnv_SC_SYMLOOP_MAX; +extern const C_Int_t Posix_ProcEnv_SC_SYNCHRONIZED_IO; +extern const C_Int_t Posix_ProcEnv_SC_THREAD_ATTR_STACKADDR; +extern const C_Int_t Posix_ProcEnv_SC_THREAD_ATTR_STACKSIZE; +extern const C_Int_t Posix_ProcEnv_SC_THREAD_CPUTIME; +extern const C_Int_t Posix_ProcEnv_SC_THREAD_DESTRUCTOR_ITERATIONS; +extern const C_Int_t Posix_ProcEnv_SC_THREAD_KEYS_MAX; +extern const C_Int_t Posix_ProcEnv_SC_THREAD_PRIO_INHERIT; +extern const C_Int_t Posix_ProcEnv_SC_THREAD_PRIO_PROTECT; +extern const C_Int_t Posix_ProcEnv_SC_THREAD_PRIORITY_SCHEDULING; +extern const C_Int_t Posix_ProcEnv_SC_THREAD_PROCESS_SHARED; +extern const C_Int_t Posix_ProcEnv_SC_THREAD_SAFE_FUNCTIONS; +extern const C_Int_t Posix_ProcEnv_SC_THREAD_SPORADIC_SERVER; +extern const C_Int_t Posix_ProcEnv_SC_THREAD_STACK_MIN; +extern const C_Int_t Posix_ProcEnv_SC_THREAD_THREADS_MAX; +extern const C_Int_t Posix_ProcEnv_SC_THREADS; +extern const C_Int_t Posix_ProcEnv_SC_TIMEOUTS; +extern const C_Int_t Posix_ProcEnv_SC_TIMER_MAX; +extern const C_Int_t Posix_ProcEnv_SC_TIMERS; +extern const C_Int_t Posix_ProcEnv_SC_TRACE; +extern const C_Int_t Posix_ProcEnv_SC_TRACE_EVENT_FILTER; +extern const C_Int_t Posix_ProcEnv_SC_TRACE_EVENT_NAME_MAX; +extern const C_Int_t Posix_ProcEnv_SC_TRACE_INHERIT; +extern const C_Int_t Posix_ProcEnv_SC_TRACE_LOG; +extern const C_Int_t Posix_ProcEnv_SC_TRACE_NAME_MAX; +extern const C_Int_t Posix_ProcEnv_SC_TRACE_SYS_MAX; +extern const C_Int_t Posix_ProcEnv_SC_TRACE_USER_EVENT_MAX; +extern const C_Int_t Posix_ProcEnv_SC_TTY_NAME_MAX; +extern const C_Int_t Posix_ProcEnv_SC_TYPED_MEMORY_OBJECTS; +extern const C_Int_t Posix_ProcEnv_SC_TZNAME_MAX; +extern const C_Int_t Posix_ProcEnv_SC_V6_ILP32_OFF32; +extern const C_Int_t Posix_ProcEnv_SC_V6_ILP32_OFFBIG; +extern const C_Int_t Posix_ProcEnv_SC_V6_LP64_OFF64; +extern const C_Int_t Posix_ProcEnv_SC_V6_LPBIG_OFFBIG; +extern const C_Int_t Posix_ProcEnv_SC_VERSION; +extern const C_Int_t Posix_ProcEnv_SC_XBS5_ILP32_OFF32; +extern const C_Int_t Posix_ProcEnv_SC_XBS5_ILP32_OFFBIG; +extern const C_Int_t Posix_ProcEnv_SC_XBS5_LP64_OFF64; +extern const C_Int_t Posix_ProcEnv_SC_XBS5_LPBIG_OFFBIG; +extern const C_Int_t Posix_ProcEnv_SC_XOPEN_CRYPT; +extern const C_Int_t Posix_ProcEnv_SC_XOPEN_ENH_I18N; +extern const C_Int_t Posix_ProcEnv_SC_XOPEN_LEGACY; +extern const C_Int_t Posix_ProcEnv_SC_XOPEN_REALTIME; +extern const C_Int_t Posix_ProcEnv_SC_XOPEN_REALTIME_THREADS; +extern const C_Int_t Posix_ProcEnv_SC_XOPEN_SHM; +extern const C_Int_t Posix_ProcEnv_SC_XOPEN_STREAMS; +extern const C_Int_t Posix_ProcEnv_SC_XOPEN_UNIX; +extern const C_Int_t Posix_ProcEnv_SC_XOPEN_VERSION; +C_Errno_t(C_Int_t) Posix_ProcEnv_setenv(NullString8_t,NullString8_t); +C_Errno_t(C_Int_t) Posix_ProcEnv_setgid(C_GId_t); +C_Errno_t(C_Int_t) Posix_ProcEnv_setgroups(C_Int_t,Vector(C_GId_t)); +C_Errno_t(C_Int_t) Posix_ProcEnv_setpgid(C_PId_t,C_PId_t); +C_Errno_t(C_PId_t) Posix_ProcEnv_setsid(void); +C_Errno_t(C_Int_t) Posix_ProcEnv_setuid(C_UId_t); +C_Errno_t(C_Long_t) Posix_ProcEnv_sysconf(C_Int_t); +C_Errno_t(C_Clock_t) Posix_ProcEnv_times(void); +C_Clock_t Posix_ProcEnv_Times_getCSTime(void); +C_Clock_t Posix_ProcEnv_Times_getCUTime(void); +C_Clock_t Posix_ProcEnv_Times_getSTime(void); +C_Clock_t Posix_ProcEnv_Times_getUTime(void); +C_Errno_t(C_String_t) Posix_ProcEnv_ttyname(C_Fd_t); +C_Errno_t(C_Int_t) Posix_ProcEnv_uname(void); +C_String_t Posix_ProcEnv_Uname_getMachine(void); +C_String_t Posix_ProcEnv_Uname_getNodeName(void); +C_String_t Posix_ProcEnv_Uname_getRelease(void); +C_String_t Posix_ProcEnv_Uname_getSysName(void); +C_String_t Posix_ProcEnv_Uname_getVersion(void); +C_UInt_t Posix_Process_alarm(C_UInt_t); +C_Errno_t(C_Int_t) Posix_Process_exece(NullString8_t,String8_t,Array(C_Pointer_t),Vector(C_Size_t),String8_t,Array(C_Pointer_t),Vector(C_Size_t)); +C_Errno_t(C_Int_t) Posix_Process_execp(NullString8_t,String8_t,Array(C_Pointer_t),Vector(C_Size_t)); +__attribute__((noreturn)) void Posix_Process_exit(C_Status_t); +C_Int_t Posix_Process_exitStatus(C_Status_t); +C_Errno_t(C_PId_t) Posix_Process_fork(void); +C_Int_t Posix_Process_ifExited(C_Status_t); +C_Int_t Posix_Process_ifSignaled(C_Status_t); +C_Int_t Posix_Process_ifStopped(C_Status_t); +C_Errno_t(C_Int_t) Posix_Process_kill(C_PId_t,C_Signal_t); +C_Errno_t(C_Int_t) Posix_Process_nanosleep(Ref(C_Time_t),Ref(C_Long_t)); +C_Errno_t(C_Int_t) Posix_Process_pause(void); +C_UInt_t Posix_Process_sleep(C_UInt_t); +C_Signal_t Posix_Process_stopSig(C_Status_t); +C_Errno_t(C_Status_t) Posix_Process_system(NullString8_t); +C_Signal_t Posix_Process_termSig(C_Status_t); +extern const C_Int_t Posix_Process_W_NOHANG; +extern const C_Int_t Posix_Process_W_UNTRACED; +C_Errno_t(C_PId_t) Posix_Process_waitpid(C_PId_t,Ref(C_Int_t),C_Int_t); +C_Errno_t(C_Int_t) Posix_Signal_default(C_Signal_t); +C_Errno_t(C_Int_t) Posix_Signal_handlee(C_Signal_t); +void Posix_Signal_handleGC(void); +C_Errno_t(C_Int_t) Posix_Signal_ignore(C_Signal_t); +C_Errno_t(C_Int_t) Posix_Signal_isDefault(C_Signal_t,Ref(C_Int_t)); +C_Errno_t(C_Int_t) Posix_Signal_isIgnore(C_Signal_t,Ref(C_Int_t)); +C_Int_t Posix_Signal_isPending(C_Signal_t); +C_Int_t Posix_Signal_isPendingGC(void); +extern const C_Int_t Posix_Signal_NSIG; +void Posix_Signal_resetPending(void); +extern const C_Int_t Posix_Signal_SIG_BLOCK; +extern const C_Int_t Posix_Signal_SIG_SETMASK; +extern const C_Int_t Posix_Signal_SIG_UNBLOCK; +extern const C_Signal_t Posix_Signal_SIGABRT; +C_Errno_t(C_Int_t) Posix_Signal_sigaddset(C_Signal_t); +extern const C_Signal_t Posix_Signal_SIGALRM; +extern const C_Signal_t Posix_Signal_SIGBUS; +extern const C_Signal_t Posix_Signal_SIGCHLD; +extern const C_Signal_t Posix_Signal_SIGCONT; +C_Errno_t(C_Int_t) Posix_Signal_sigdelset(C_Signal_t); +C_Errno_t(C_Int_t) Posix_Signal_sigemptyset(void); +C_Errno_t(C_Int_t) Posix_Signal_sigfillset(void); +extern const C_Signal_t Posix_Signal_SIGFPE; +extern const C_Signal_t Posix_Signal_SIGHUP; +extern const C_Signal_t Posix_Signal_SIGILL; +extern const C_Signal_t Posix_Signal_SIGINT; +C_Errno_t(C_Int_t) Posix_Signal_sigismember(C_Signal_t); +extern const C_Signal_t Posix_Signal_SIGKILL; +extern const C_Signal_t Posix_Signal_SIGPIPE; +extern const C_Signal_t Posix_Signal_SIGPOLL; +C_Errno_t(C_Int_t) Posix_Signal_sigprocmask(C_Int_t); +extern const C_Signal_t Posix_Signal_SIGPROF; +extern const C_Signal_t Posix_Signal_SIGQUIT; +extern const C_Signal_t Posix_Signal_SIGSEGV; +extern const C_Signal_t Posix_Signal_SIGSTOP; +void Posix_Signal_sigsuspend(void); +extern const C_Signal_t Posix_Signal_SIGSYS; +extern const C_Signal_t Posix_Signal_SIGTERM; +extern const C_Signal_t Posix_Signal_SIGTRAP; +extern const C_Signal_t Posix_Signal_SIGTSTP; +extern const C_Signal_t Posix_Signal_SIGTTIN; +extern const C_Signal_t Posix_Signal_SIGTTOU; +extern const C_Signal_t Posix_Signal_SIGURG; +extern const C_Signal_t Posix_Signal_SIGUSR1; +extern const C_Signal_t Posix_Signal_SIGUSR2; +extern const C_Signal_t Posix_Signal_SIGVTALRM; +extern const C_Signal_t Posix_Signal_SIGXCPU; +extern const C_Signal_t Posix_Signal_SIGXFSZ; +C_Errno_t(C_Int_t) Posix_SysDB_getgrgid(C_GId_t); +C_Errno_t(C_Int_t) Posix_SysDB_getgrnam(NullString8_t); +C_Errno_t(C_Int_t) Posix_SysDB_getpwnam(NullString8_t); +C_Errno_t(C_Int_t) Posix_SysDB_getpwuid(C_GId_t); +C_GId_t Posix_SysDB_Group_getGId(void); +C_StringArray_t Posix_SysDB_Group_getMem(void); +C_String_t Posix_SysDB_Group_getName(void); +C_String_t Posix_SysDB_Passwd_getDir(void); +C_GId_t Posix_SysDB_Passwd_getGId(void); +C_String_t Posix_SysDB_Passwd_getName(void); +C_String_t Posix_SysDB_Passwd_getShell(void); +C_UId_t Posix_SysDB_Passwd_getUId(void); +extern const C_Speed_t Posix_TTY_B0; +extern const C_Speed_t Posix_TTY_B110; +extern const C_Speed_t Posix_TTY_B1200; +extern const C_Speed_t Posix_TTY_B134; +extern const C_Speed_t Posix_TTY_B150; +extern const C_Speed_t Posix_TTY_B1800; +extern const C_Speed_t Posix_TTY_B19200; +extern const C_Speed_t Posix_TTY_B200; +extern const C_Speed_t Posix_TTY_B2400; +extern const C_Speed_t Posix_TTY_B300; +extern const C_Speed_t Posix_TTY_B38400; +extern const C_Speed_t Posix_TTY_B4800; +extern const C_Speed_t Posix_TTY_B50; +extern const C_Speed_t Posix_TTY_B600; +extern const C_Speed_t Posix_TTY_B75; +extern const C_Speed_t Posix_TTY_B9600; +extern const C_TCFlag_t Posix_TTY_C_CLOCAL; +extern const C_TCFlag_t Posix_TTY_C_CREAD; +extern const C_TCFlag_t Posix_TTY_C_CS5; +extern const C_TCFlag_t Posix_TTY_C_CS6; +extern const C_TCFlag_t Posix_TTY_C_CS7; +extern const C_TCFlag_t Posix_TTY_C_CS8; +extern const C_TCFlag_t Posix_TTY_C_CSIZE; +extern const C_TCFlag_t Posix_TTY_C_CSTOPB; +extern const C_TCFlag_t Posix_TTY_C_HUPCL; +extern const C_TCFlag_t Posix_TTY_C_PARENB; +extern const C_TCFlag_t Posix_TTY_C_PARODD; +extern const C_TCFlag_t Posix_TTY_I_BRKINT; +extern const C_TCFlag_t Posix_TTY_I_ICRNL; +extern const C_TCFlag_t Posix_TTY_I_IGNBRK; +extern const C_TCFlag_t Posix_TTY_I_IGNCR; +extern const C_TCFlag_t Posix_TTY_I_IGNPAR; +extern const C_TCFlag_t Posix_TTY_I_INLCR; +extern const C_TCFlag_t Posix_TTY_I_INPCK; +extern const C_TCFlag_t Posix_TTY_I_ISTRIP; +extern const C_TCFlag_t Posix_TTY_I_IXANY; +extern const C_TCFlag_t Posix_TTY_I_IXOFF; +extern const C_TCFlag_t Posix_TTY_I_IXON; +extern const C_TCFlag_t Posix_TTY_I_PARMRK; +extern const C_TCFlag_t Posix_TTY_L_ECHO; +extern const C_TCFlag_t Posix_TTY_L_ECHOE; +extern const C_TCFlag_t Posix_TTY_L_ECHOK; +extern const C_TCFlag_t Posix_TTY_L_ECHONL; +extern const C_TCFlag_t Posix_TTY_L_ICANON; +extern const C_TCFlag_t Posix_TTY_L_IEXTEN; +extern const C_TCFlag_t Posix_TTY_L_ISIG; +extern const C_TCFlag_t Posix_TTY_L_NOFLSH; +extern const C_TCFlag_t Posix_TTY_L_TOSTOP; +extern const C_TCFlag_t Posix_TTY_O_BS0; +extern const C_TCFlag_t Posix_TTY_O_BS1; +extern const C_TCFlag_t Posix_TTY_O_BSDLY; +extern const C_TCFlag_t Posix_TTY_O_CR0; +extern const C_TCFlag_t Posix_TTY_O_CR1; +extern const C_TCFlag_t Posix_TTY_O_CR2; +extern const C_TCFlag_t Posix_TTY_O_CR3; +extern const C_TCFlag_t Posix_TTY_O_CRDLY; +extern const C_TCFlag_t Posix_TTY_O_FF0; +extern const C_TCFlag_t Posix_TTY_O_FF1; +extern const C_TCFlag_t Posix_TTY_O_FFDLY; +extern const C_TCFlag_t Posix_TTY_O_NL0; +extern const C_TCFlag_t Posix_TTY_O_NL1; +extern const C_TCFlag_t Posix_TTY_O_NLDLY; +extern const C_TCFlag_t Posix_TTY_O_OCRNL; +extern const C_TCFlag_t Posix_TTY_O_OFILL; +extern const C_TCFlag_t Posix_TTY_O_ONLCR; +extern const C_TCFlag_t Posix_TTY_O_ONLRET; +extern const C_TCFlag_t Posix_TTY_O_ONOCR; +extern const C_TCFlag_t Posix_TTY_O_OPOST; +extern const C_TCFlag_t Posix_TTY_O_TAB0; +extern const C_TCFlag_t Posix_TTY_O_TAB1; +extern const C_TCFlag_t Posix_TTY_O_TAB2; +extern const C_TCFlag_t Posix_TTY_O_TAB3; +extern const C_TCFlag_t Posix_TTY_O_TABDLY; +extern const C_TCFlag_t Posix_TTY_O_VT0; +extern const C_TCFlag_t Posix_TTY_O_VT1; +extern const C_TCFlag_t Posix_TTY_O_VTDLY; +C_Errno_t(C_Int_t) Posix_TTY_TC_drain(C_Fd_t); +C_Errno_t(C_Int_t) Posix_TTY_TC_flow(C_Fd_t,C_Int_t); +C_Errno_t(C_Int_t) Posix_TTY_TC_flush(C_Fd_t,C_Int_t); +C_Errno_t(C_Int_t) Posix_TTY_TC_getattr(C_Fd_t); +C_Errno_t(C_PId_t) Posix_TTY_TC_getpgrp(C_Fd_t); +C_Errno_t(C_Int_t) Posix_TTY_TC_sendbreak(C_Fd_t,C_Int_t); +C_Errno_t(C_Int_t) Posix_TTY_TC_setattr(C_Fd_t,C_Int_t); +C_Errno_t(C_Int_t) Posix_TTY_TC_setpgrp(C_Fd_t,C_PId_t); +extern const C_Int_t Posix_TTY_TC_TCIFLUSH; +extern const C_Int_t Posix_TTY_TC_TCIOFF; +extern const C_Int_t Posix_TTY_TC_TCIOFLUSH; +extern const C_Int_t Posix_TTY_TC_TCION; +extern const C_Int_t Posix_TTY_TC_TCOFLUSH; +extern const C_Int_t Posix_TTY_TC_TCOOFF; +extern const C_Int_t Posix_TTY_TC_TCOON; +extern const C_Int_t Posix_TTY_TC_TCSADRAIN; +extern const C_Int_t Posix_TTY_TC_TCSAFLUSH; +extern const C_Int_t Posix_TTY_TC_TCSANOW; +C_Speed_t Posix_TTY_Termios_cfGetISpeed(void); +C_Speed_t Posix_TTY_Termios_cfGetOSpeed(void); +C_Errno_t(C_Int_t) Posix_TTY_Termios_cfSetISpeed(C_Speed_t); +C_Errno_t(C_Int_t) Posix_TTY_Termios_cfSetOSpeed(C_Speed_t); +void Posix_TTY_Termios_getCC(Array(C_CC_t)); +C_TCFlag_t Posix_TTY_Termios_getCFlag(void); +C_TCFlag_t Posix_TTY_Termios_getIFlag(void); +C_TCFlag_t Posix_TTY_Termios_getLFlag(void); +C_TCFlag_t Posix_TTY_Termios_getOFlag(void); +void Posix_TTY_Termios_setCC(Array(C_CC_t)); +void Posix_TTY_Termios_setCFlag(C_TCFlag_t); +void Posix_TTY_Termios_setIFlag(C_TCFlag_t); +void Posix_TTY_Termios_setLFlag(C_TCFlag_t); +void Posix_TTY_Termios_setOFlag(C_TCFlag_t); +extern const C_Int_t Posix_TTY_V_NCCS; +extern const C_Int_t Posix_TTY_V_VEOF; +extern const C_Int_t Posix_TTY_V_VEOL; +extern const C_Int_t Posix_TTY_V_VERASE; +extern const C_Int_t Posix_TTY_V_VINTR; +extern const C_Int_t Posix_TTY_V_VKILL; +extern const C_Int_t Posix_TTY_V_VMIN; +extern const C_Int_t Posix_TTY_V_VQUIT; +extern const C_Int_t Posix_TTY_V_VSTART; +extern const C_Int_t Posix_TTY_V_VSTOP; +extern const C_Int_t Posix_TTY_V_VSUSP; +extern const C_Int_t Posix_TTY_V_VTIME; +MLTON_CODEGEN_STATIC_INLINE Real32_t Real32_abs(Real32_t); +MLTON_CODEGEN_STATIC_INLINE Real32_t Real32_add(Real32_t,Real32_t); +C_Int_t Real32_class(Real32_t); +MLTON_CODEGEN_STATIC_INLINE Real32_t Real32_div(Real32_t,Real32_t); +MLTON_CODEGEN_STATIC_INLINE Bool_t Real32_equal(Real32_t,Real32_t); +MLTON_CODEGEN_STATIC_INLINE Real32_t Real32_fetch(Ref(Real32_t)); +MLTON_CODEGEN_STATIC_INLINE Real32_t Real32_frexp(Real32_t,Ref(C_Int_t)); +C_String_t Real32_gdtoa(Real32_t,C_Int_t,C_Int_t,Ref(C_Int_t)); +MLTON_CODEGEN_STATIC_INLINE Real32_t Real32_ldexp(Real32_t,C_Int_t); +MLTON_CODEGEN_STATIC_INLINE Bool_t Real32_le(Real32_t,Real32_t); +MLTON_CODEGEN_STATIC_INLINE Bool_t Real32_lt(Real32_t,Real32_t); +MLTON_CODEGEN_STATIC_INLINE Real32_t Real32_Math_acos(Real32_t); +MLTON_CODEGEN_STATIC_INLINE Real32_t Real32_Math_asin(Real32_t); +MLTON_CODEGEN_STATIC_INLINE Real32_t Real32_Math_atan(Real32_t); +MLTON_CODEGEN_STATIC_INLINE Real32_t Real32_Math_atan2(Real32_t,Real32_t); +MLTON_CODEGEN_STATIC_INLINE Real32_t Real32_Math_cos(Real32_t); +MLTON_CODEGEN_STATIC_INLINE Real32_t Real32_Math_cosh(Real32_t); +extern Real32_t Real32_Math_e; +MLTON_CODEGEN_STATIC_INLINE Real32_t Real32_Math_exp(Real32_t); +MLTON_CODEGEN_STATIC_INLINE Real32_t Real32_Math_ln(Real32_t); +MLTON_CODEGEN_STATIC_INLINE Real32_t Real32_Math_log10(Real32_t); +extern Real32_t Real32_Math_pi; +MLTON_CODEGEN_STATIC_INLINE Real32_t Real32_Math_pow(Real32_t,Real32_t); +MLTON_CODEGEN_STATIC_INLINE Real32_t Real32_Math_sin(Real32_t); +MLTON_CODEGEN_STATIC_INLINE Real32_t Real32_Math_sinh(Real32_t); +MLTON_CODEGEN_STATIC_INLINE Real32_t Real32_Math_sqrt(Real32_t); +MLTON_CODEGEN_STATIC_INLINE Real32_t Real32_Math_tan(Real32_t); +MLTON_CODEGEN_STATIC_INLINE Real32_t Real32_Math_tanh(Real32_t); +extern Real32_t Real32_maxFinite; +extern Real32_t Real32_minNormalPos; +extern Real32_t Real32_minPos; +MLTON_CODEGEN_STATIC_INLINE Real32_t Real32_modf(Real32_t,Ref(Real32_t)); +MLTON_CODEGEN_STATIC_INLINE void Real32_move(Ref(Real32_t),Ref(Real32_t)); +MLTON_CODEGEN_STATIC_INLINE Real32_t Real32_mul(Real32_t,Real32_t); +MLTON_CODEGEN_STATIC_INLINE Real32_t Real32_muladd(Real32_t,Real32_t,Real32_t); +MLTON_CODEGEN_STATIC_INLINE Real32_t Real32_mulsub(Real32_t,Real32_t,Real32_t); +MLTON_CODEGEN_STATIC_INLINE Real32_t Real32_neg(Real32_t); +Real32_t Real32_nextAfterDown(Real32_t); +Real32_t Real32_nextAfterUp(Real32_t); +MLTON_CODEGEN_STATIC_INLINE Real32_t Real32_round(Real32_t); +C_Int_t Real32_signBit(Real32_t); +MLTON_CODEGEN_STATIC_INLINE void Real32_store(Ref(Real32_t),Real32_t); +Real32_t Real32_strto(NullString8_t); +MLTON_CODEGEN_STATIC_INLINE Real32_t Real32_sub(Real32_t,Real32_t); +MLTON_CODEGEN_STATIC_INLINE Real32_t Real32_toReal32(Real32_t); +MLTON_CODEGEN_STATIC_INLINE Real64_t Real32_toReal64(Real32_t); +MLTON_CODEGEN_STATIC_INLINE Int16_t Real32_toWordS16(Real32_t); +MLTON_CODEGEN_STATIC_INLINE Int32_t Real32_toWordS32(Real32_t); +MLTON_CODEGEN_STATIC_INLINE Int64_t Real32_toWordS64(Real32_t); +MLTON_CODEGEN_STATIC_INLINE Int8_t Real32_toWordS8(Real32_t); +MLTON_CODEGEN_STATIC_INLINE Word16_t Real32_toWordU16(Real32_t); +MLTON_CODEGEN_STATIC_INLINE Word32_t Real32_toWordU32(Real32_t); +MLTON_CODEGEN_STATIC_INLINE Word64_t Real32_toWordU64(Real32_t); +MLTON_CODEGEN_STATIC_INLINE Word8_t Real32_toWordU8(Real32_t); +MLTON_CODEGEN_STATIC_INLINE Real64_t Real64_abs(Real64_t); +MLTON_CODEGEN_STATIC_INLINE Real64_t Real64_add(Real64_t,Real64_t); +C_Int_t Real64_class(Real64_t); +MLTON_CODEGEN_STATIC_INLINE Real64_t Real64_div(Real64_t,Real64_t); +MLTON_CODEGEN_STATIC_INLINE Bool_t Real64_equal(Real64_t,Real64_t); +MLTON_CODEGEN_STATIC_INLINE Real64_t Real64_fetch(Ref(Real64_t)); +MLTON_CODEGEN_STATIC_INLINE Real64_t Real64_frexp(Real64_t,Ref(C_Int_t)); +C_String_t Real64_gdtoa(Real64_t,C_Int_t,C_Int_t,Ref(C_Int_t)); +MLTON_CODEGEN_STATIC_INLINE Real64_t Real64_ldexp(Real64_t,C_Int_t); +MLTON_CODEGEN_STATIC_INLINE Bool_t Real64_le(Real64_t,Real64_t); +MLTON_CODEGEN_STATIC_INLINE Bool_t Real64_lt(Real64_t,Real64_t); +MLTON_CODEGEN_STATIC_INLINE Real64_t Real64_Math_acos(Real64_t); +MLTON_CODEGEN_STATIC_INLINE Real64_t Real64_Math_asin(Real64_t); +MLTON_CODEGEN_STATIC_INLINE Real64_t Real64_Math_atan(Real64_t); +MLTON_CODEGEN_STATIC_INLINE Real64_t Real64_Math_atan2(Real64_t,Real64_t); +MLTON_CODEGEN_STATIC_INLINE Real64_t Real64_Math_cos(Real64_t); +MLTON_CODEGEN_STATIC_INLINE Real64_t Real64_Math_cosh(Real64_t); +extern Real64_t Real64_Math_e; +MLTON_CODEGEN_STATIC_INLINE Real64_t Real64_Math_exp(Real64_t); +MLTON_CODEGEN_STATIC_INLINE Real64_t Real64_Math_ln(Real64_t); +MLTON_CODEGEN_STATIC_INLINE Real64_t Real64_Math_log10(Real64_t); +extern Real64_t Real64_Math_pi; +MLTON_CODEGEN_STATIC_INLINE Real64_t Real64_Math_pow(Real64_t,Real64_t); +MLTON_CODEGEN_STATIC_INLINE Real64_t Real64_Math_sin(Real64_t); +MLTON_CODEGEN_STATIC_INLINE Real64_t Real64_Math_sinh(Real64_t); +MLTON_CODEGEN_STATIC_INLINE Real64_t Real64_Math_sqrt(Real64_t); +MLTON_CODEGEN_STATIC_INLINE Real64_t Real64_Math_tan(Real64_t); +MLTON_CODEGEN_STATIC_INLINE Real64_t Real64_Math_tanh(Real64_t); +extern Real64_t Real64_maxFinite; +extern Real64_t Real64_minNormalPos; +extern Real64_t Real64_minPos; +MLTON_CODEGEN_STATIC_INLINE Real64_t Real64_modf(Real64_t,Ref(Real64_t)); +MLTON_CODEGEN_STATIC_INLINE void Real64_move(Ref(Real64_t),Ref(Real64_t)); +MLTON_CODEGEN_STATIC_INLINE Real64_t Real64_mul(Real64_t,Real64_t); +MLTON_CODEGEN_STATIC_INLINE Real64_t Real64_muladd(Real64_t,Real64_t,Real64_t); +MLTON_CODEGEN_STATIC_INLINE Real64_t Real64_mulsub(Real64_t,Real64_t,Real64_t); +MLTON_CODEGEN_STATIC_INLINE Real64_t Real64_neg(Real64_t); +Real64_t Real64_nextAfterDown(Real64_t); +Real64_t Real64_nextAfterUp(Real64_t); +MLTON_CODEGEN_STATIC_INLINE Real64_t Real64_round(Real64_t); +C_Int_t Real64_signBit(Real64_t); +MLTON_CODEGEN_STATIC_INLINE void Real64_store(Ref(Real64_t),Real64_t); +Real64_t Real64_strto(NullString8_t); +MLTON_CODEGEN_STATIC_INLINE Real64_t Real64_sub(Real64_t,Real64_t); +MLTON_CODEGEN_STATIC_INLINE Real32_t Real64_toReal32(Real64_t); +MLTON_CODEGEN_STATIC_INLINE Real64_t Real64_toReal64(Real64_t); +MLTON_CODEGEN_STATIC_INLINE Int16_t Real64_toWordS16(Real64_t); +MLTON_CODEGEN_STATIC_INLINE Int32_t Real64_toWordS32(Real64_t); +MLTON_CODEGEN_STATIC_INLINE Int64_t Real64_toWordS64(Real64_t); +MLTON_CODEGEN_STATIC_INLINE Int8_t Real64_toWordS8(Real64_t); +MLTON_CODEGEN_STATIC_INLINE Word16_t Real64_toWordU16(Real64_t); +MLTON_CODEGEN_STATIC_INLINE Word32_t Real64_toWordU32(Real64_t); +MLTON_CODEGEN_STATIC_INLINE Word64_t Real64_toWordU64(Real64_t); +MLTON_CODEGEN_STATIC_INLINE Word8_t Real64_toWordU8(Real64_t); +C_Errno_t(C_Int_t) Socket_accept(C_Sock_t,Array(Word8_t),Ref(C_Socklen_t)); +extern const C_Int_t Socket_AF_INET; +extern const C_Int_t Socket_AF_INET6; +extern const C_Int_t Socket_AF_UNIX; +extern const C_Int_t Socket_AF_UNSPEC; +C_Errno_t(C_Int_t) Socket_bind(C_Sock_t,Vector(Word8_t),C_Socklen_t); +C_Errno_t(C_Int_t) Socket_close(C_Sock_t); +C_Errno_t(C_Int_t) Socket_connect(C_Sock_t,Vector(Word8_t),C_Socklen_t); +extern const C_Int_t Socket_Ctl_FIONBIO; +extern const C_Int_t Socket_Ctl_FIONREAD; +C_Errno_t(C_Int_t) Socket_Ctl_getIOCtl(C_Sock_t,C_Int_t,Array(Word8_t)); +C_Errno_t(C_Int_t) Socket_Ctl_getPeerName(C_Sock_t,Array(Word8_t),Ref(C_Socklen_t)); +C_Errno_t(C_Int_t) Socket_Ctl_getSockName(C_Sock_t,Array(Word8_t),Ref(C_Socklen_t)); +C_Errno_t(C_Int_t) Socket_Ctl_getSockOpt(C_Sock_t,C_Int_t,C_Int_t,Array(Word8_t),Ref(C_Socklen_t)); +C_Errno_t(C_Int_t) Socket_Ctl_setIOCtl(C_Sock_t,C_Int_t,Vector(Word8_t)); +C_Errno_t(C_Int_t) Socket_Ctl_setSockOpt(C_Sock_t,C_Int_t,C_Int_t,Vector(Word8_t),C_Socklen_t); +extern const C_Int_t Socket_Ctl_SIOCATMARK; +extern const C_Int_t Socket_Ctl_SO_ACCEPTCONN; +extern const C_Int_t Socket_Ctl_SO_BROADCAST; +extern const C_Int_t Socket_Ctl_SO_DEBUG; +extern const C_Int_t Socket_Ctl_SO_DONTROUTE; +extern const C_Int_t Socket_Ctl_SO_ERROR; +extern const C_Int_t Socket_Ctl_SO_KEEPALIVE; +extern const C_Int_t Socket_Ctl_SO_LINGER; +extern const C_Int_t Socket_Ctl_SO_OOBINLINE; +extern const C_Int_t Socket_Ctl_SO_RCVBUF; +extern const C_Int_t Socket_Ctl_SO_RCVLOWAT; +extern const C_Int_t Socket_Ctl_SO_RCVTIMEO; +extern const C_Int_t Socket_Ctl_SO_REUSEADDR; +extern const C_Int_t Socket_Ctl_SO_SNDBUF; +extern const C_Int_t Socket_Ctl_SO_SNDLOWAT; +extern const C_Int_t Socket_Ctl_SO_SNDTIMEO; +extern const C_Int_t Socket_Ctl_SO_TYPE; +extern const C_Int_t Socket_Ctl_SOL_SOCKET; +C_Int_t Socket_familyOfAddr(Vector(Word8_t)); +C_Errno_t(C_Int_t) Socket_GenericSock_socket(C_Int_t,C_Int_t,C_Int_t); +C_Errno_t(C_Int_t) Socket_GenericSock_socketPair(C_Int_t,C_Int_t,C_Int_t,Array(C_Int_t)); +extern const C_Int_t Socket_INetSock_Ctl_IPPROTO_TCP; +extern const C_Int_t Socket_INetSock_Ctl_TCP_NODELAY; +void Socket_INetSock_fromAddr(Vector(Word8_t)); +void Socket_INetSock_getInAddr(Array(Word8_t)); +C_Int_t Socket_INetSock_getPort(void); +void Socket_INetSock_toAddr(Vector(Word8_t),C_Int_t,Array(Word8_t),Ref(C_Socklen_t)); +C_Errno_t(C_Int_t) Socket_listen(C_Sock_t,C_Int_t); +extern const C_Int_t Socket_MSG_CTRUNC; +extern const C_Int_t Socket_MSG_DONTROUTE; +extern const C_Int_t Socket_MSG_DONTWAIT; +extern const C_Int_t Socket_MSG_EOR; +extern const C_Int_t Socket_MSG_OOB; +extern const C_Int_t Socket_MSG_PEEK; +extern const C_Int_t Socket_MSG_TRUNC; +extern const C_Int_t Socket_MSG_WAITALL; +C_Errno_t(C_SSize_t) Socket_recv(C_Sock_t,Array(Word8_t),C_Int_t,C_Size_t,C_Int_t); +C_Errno_t(C_SSize_t) Socket_recvFrom(C_Sock_t,Array(Word8_t),C_Int_t,C_Size_t,C_Int_t,Array(Word8_t),Ref(C_Socklen_t)); +C_Errno_t(C_SSize_t) Socket_sendArr(C_Sock_t,Array(Word8_t),C_Int_t,C_Size_t,C_Int_t); +C_Errno_t(C_SSize_t) Socket_sendArrTo(C_Sock_t,Array(Word8_t),C_Int_t,C_Size_t,C_Int_t,Vector(Word8_t),C_Socklen_t); +C_Errno_t(C_SSize_t) Socket_sendVec(C_Sock_t,Vector(Word8_t),C_Int_t,C_Size_t,C_Int_t); +C_Errno_t(C_SSize_t) Socket_sendVecTo(C_Sock_t,Vector(Word8_t),C_Int_t,C_Size_t,C_Int_t,Vector(Word8_t),C_Socklen_t); +extern const C_Int_t Socket_SHUT_RD; +extern const C_Int_t Socket_SHUT_RDWR; +extern const C_Int_t Socket_SHUT_WR; +C_Errno_t(C_Int_t) Socket_shutdown(C_Sock_t,C_Int_t); +extern const C_Int_t Socket_SOCK_DGRAM; +extern const C_Int_t Socket_SOCK_RAW; +extern const C_Int_t Socket_SOCK_SEQPACKET; +extern const C_Int_t Socket_SOCK_STREAM; +extern const C_Size_t Socket_sockAddrStorageLen; +void Socket_UnixSock_fromAddr(Vector(Word8_t),Array(Char8_t),C_Size_t); +C_Size_t Socket_UnixSock_pathLen(Vector(Word8_t)); +void Socket_UnixSock_toAddr(NullString8_t,C_Size_t,Array(Word8_t),Ref(C_Socklen_t)); +void Stdio_print(String8_t); +void Stdio_printStderr(String8_t); +void Stdio_printStdout(String8_t); +C_Int_t Time_getTimeOfDay(void); +C_Time_t Time_sec(void); +C_SUSeconds_t Time_usec(void); +C_Errno_t(C_PId_t) Windows_Process_create(NullString8_t,NullString8_t,NullString8_t,C_Fd_t,C_Fd_t,C_Fd_t); +C_Errno_t(C_Int_t) Windows_Process_terminate(C_PId_t,C_Signal_t); +MLTON_CODEGEN_STATIC_INLINE Word16_t Word16_add(Word16_t,Word16_t); +MLTON_CODEGEN_STATIC_INLINE Word16_t Word16_andb(Word16_t,Word16_t); +MLTON_CODEGEN_STATIC_INLINE Bool_t Word16_equal(Word16_t,Word16_t); +MLTON_CODEGEN_STATIC_INLINE Word16_t Word16_lshift(Word16_t,Word32_t); +MLTON_CODEGEN_STATIC_INLINE Word16_t Word16_neg(Word16_t); +MLTON_CODEGEN_STATIC_INLINE Word16_t Word16_notb(Word16_t); +MLTON_CODEGEN_STATIC_INLINE Word16_t Word16_orb(Word16_t,Word16_t); +MLTON_CODEGEN_STATIC_INLINE Word16_t Word16_rol(Word16_t,Word32_t); +MLTON_CODEGEN_STATIC_INLINE Word16_t Word16_ror(Word16_t,Word32_t); +MLTON_CODEGEN_STATIC_INLINE Word16_t Word16_sub(Word16_t,Word16_t); +MLTON_CODEGEN_STATIC_INLINE Word16_t Word16_xorb(Word16_t,Word16_t); +MLTON_CODEGEN_STATIC_INLINE Word32_t Word32_add(Word32_t,Word32_t); +MLTON_CODEGEN_STATIC_INLINE Word32_t Word32_andb(Word32_t,Word32_t); +MLTON_CODEGEN_STATIC_INLINE Bool_t Word32_equal(Word32_t,Word32_t); +MLTON_CODEGEN_STATIC_INLINE Word32_t Word32_lshift(Word32_t,Word32_t); +MLTON_CODEGEN_STATIC_INLINE Word32_t Word32_neg(Word32_t); +MLTON_CODEGEN_STATIC_INLINE Word32_t Word32_notb(Word32_t); +MLTON_CODEGEN_STATIC_INLINE Word32_t Word32_orb(Word32_t,Word32_t); +MLTON_CODEGEN_STATIC_INLINE Word32_t Word32_rol(Word32_t,Word32_t); +MLTON_CODEGEN_STATIC_INLINE Word32_t Word32_ror(Word32_t,Word32_t); +MLTON_CODEGEN_STATIC_INLINE Word32_t Word32_sub(Word32_t,Word32_t); +MLTON_CODEGEN_STATIC_INLINE Word32_t Word32_xorb(Word32_t,Word32_t); +MLTON_CODEGEN_STATIC_INLINE Word64_t Word64_add(Word64_t,Word64_t); +MLTON_CODEGEN_STATIC_INLINE Word64_t Word64_andb(Word64_t,Word64_t); +MLTON_CODEGEN_STATIC_INLINE Bool_t Word64_equal(Word64_t,Word64_t); +MLTON_CODEGEN_STATIC_INLINE Word64_t Word64_fetch(Ref(Word64_t)); +MLTON_CODEGEN_STATIC_INLINE Word64_t Word64_lshift(Word64_t,Word32_t); +MLTON_CODEGEN_STATIC_INLINE void Word64_move(Ref(Word64_t),Ref(Word64_t)); +MLTON_CODEGEN_STATIC_INLINE Word64_t Word64_neg(Word64_t); +MLTON_CODEGEN_STATIC_INLINE Word64_t Word64_notb(Word64_t); +MLTON_CODEGEN_STATIC_INLINE Word64_t Word64_orb(Word64_t,Word64_t); +MLTON_CODEGEN_STATIC_INLINE Word64_t Word64_rol(Word64_t,Word32_t); +MLTON_CODEGEN_STATIC_INLINE Word64_t Word64_ror(Word64_t,Word32_t); +MLTON_CODEGEN_STATIC_INLINE void Word64_store(Ref(Word64_t),Word64_t); +MLTON_CODEGEN_STATIC_INLINE Word64_t Word64_sub(Word64_t,Word64_t); +MLTON_CODEGEN_STATIC_INLINE Word64_t Word64_xorb(Word64_t,Word64_t); +MLTON_CODEGEN_STATIC_INLINE Word8_t Word8_add(Word8_t,Word8_t); +MLTON_CODEGEN_STATIC_INLINE Word8_t Word8_andb(Word8_t,Word8_t); +MLTON_CODEGEN_STATIC_INLINE Bool_t Word8_equal(Word8_t,Word8_t); +MLTON_CODEGEN_STATIC_INLINE Word8_t Word8_lshift(Word8_t,Word32_t); +MLTON_CODEGEN_STATIC_INLINE Word8_t Word8_neg(Word8_t); +MLTON_CODEGEN_STATIC_INLINE Word8_t Word8_notb(Word8_t); +MLTON_CODEGEN_STATIC_INLINE Word8_t Word8_orb(Word8_t,Word8_t); +MLTON_CODEGEN_STATIC_INLINE Word8_t Word8_rol(Word8_t,Word32_t); +MLTON_CODEGEN_STATIC_INLINE Word8_t Word8_ror(Word8_t,Word32_t); +MLTON_CODEGEN_STATIC_INLINE Word8_t Word8_sub(Word8_t,Word8_t); +MLTON_CODEGEN_STATIC_INLINE Word8_t Word8_xorb(Word8_t,Word8_t); +MLTON_CODEGEN_STATIC_INLINE Bool_t WordS16_addCheckOverflows(Int16_t,Int16_t); +MLTON_CODEGEN_STATIC_INLINE Bool_t WordS16_ge(Int16_t,Int16_t); +MLTON_CODEGEN_STATIC_INLINE Bool_t WordS16_gt(Int16_t,Int16_t); +MLTON_CODEGEN_STATIC_INLINE Bool_t WordS16_le(Int16_t,Int16_t); +MLTON_CODEGEN_STATIC_INLINE Bool_t WordS16_lt(Int16_t,Int16_t); +MLTON_CODEGEN_STATIC_INLINE Int16_t WordS16_mul(Int16_t,Int16_t); +MLTON_CODEGEN_STATIC_INLINE Bool_t WordS16_mulCheckOverflows(Int16_t,Int16_t); +MLTON_CODEGEN_STATIC_INLINE Bool_t WordS16_negCheckOverflows(Int16_t); +MLTON_CODEGEN_STATIC_INLINE Int16_t WordS16_quot(Int16_t,Int16_t); +MLTON_CODEGEN_STATIC_INLINE Int16_t WordS16_rem(Int16_t,Int16_t); +MLTON_CODEGEN_STATIC_INLINE Int16_t WordS16_rshift(Int16_t,Word32_t); +MLTON_CODEGEN_STATIC_INLINE Bool_t WordS16_subCheckOverflows(Int16_t,Int16_t); +MLTON_CODEGEN_STATIC_INLINE Real32_t WordS16_toReal32(Int16_t); +MLTON_CODEGEN_STATIC_INLINE Real64_t WordS16_toReal64(Int16_t); +MLTON_CODEGEN_STATIC_INLINE Word16_t WordS16_toWord16(Int16_t); +MLTON_CODEGEN_STATIC_INLINE Word32_t WordS16_toWord32(Int16_t); +MLTON_CODEGEN_STATIC_INLINE Word64_t WordS16_toWord64(Int16_t); +MLTON_CODEGEN_STATIC_INLINE Word8_t WordS16_toWord8(Int16_t); +MLTON_CODEGEN_STATIC_INLINE Bool_t WordS32_addCheckOverflows(Int32_t,Int32_t); +MLTON_CODEGEN_STATIC_INLINE Bool_t WordS32_ge(Int32_t,Int32_t); +MLTON_CODEGEN_STATIC_INLINE Bool_t WordS32_gt(Int32_t,Int32_t); +MLTON_CODEGEN_STATIC_INLINE Bool_t WordS32_le(Int32_t,Int32_t); +MLTON_CODEGEN_STATIC_INLINE Bool_t WordS32_lt(Int32_t,Int32_t); +MLTON_CODEGEN_STATIC_INLINE Int32_t WordS32_mul(Int32_t,Int32_t); +MLTON_CODEGEN_STATIC_INLINE Bool_t WordS32_mulCheckOverflows(Int32_t,Int32_t); +MLTON_CODEGEN_STATIC_INLINE Bool_t WordS32_negCheckOverflows(Int32_t); +MLTON_CODEGEN_STATIC_INLINE Int32_t WordS32_quot(Int32_t,Int32_t); +MLTON_CODEGEN_STATIC_INLINE Int32_t WordS32_rem(Int32_t,Int32_t); +MLTON_CODEGEN_STATIC_INLINE Int32_t WordS32_rshift(Int32_t,Word32_t); +MLTON_CODEGEN_STATIC_INLINE Bool_t WordS32_subCheckOverflows(Int32_t,Int32_t); +MLTON_CODEGEN_STATIC_INLINE Real32_t WordS32_toReal32(Int32_t); +MLTON_CODEGEN_STATIC_INLINE Real64_t WordS32_toReal64(Int32_t); +MLTON_CODEGEN_STATIC_INLINE Word16_t WordS32_toWord16(Int32_t); +MLTON_CODEGEN_STATIC_INLINE Word32_t WordS32_toWord32(Int32_t); +MLTON_CODEGEN_STATIC_INLINE Word64_t WordS32_toWord64(Int32_t); +MLTON_CODEGEN_STATIC_INLINE Word8_t WordS32_toWord8(Int32_t); +MLTON_CODEGEN_STATIC_INLINE Bool_t WordS64_addCheckOverflows(Int64_t,Int64_t); +MLTON_CODEGEN_STATIC_INLINE Bool_t WordS64_ge(Int64_t,Int64_t); +MLTON_CODEGEN_STATIC_INLINE Bool_t WordS64_gt(Int64_t,Int64_t); +MLTON_CODEGEN_STATIC_INLINE Bool_t WordS64_le(Int64_t,Int64_t); +MLTON_CODEGEN_STATIC_INLINE Bool_t WordS64_lt(Int64_t,Int64_t); +MLTON_CODEGEN_STATIC_INLINE Int64_t WordS64_mul(Int64_t,Int64_t); +MLTON_CODEGEN_STATIC_INLINE Bool_t WordS64_mulCheckOverflows(Int64_t,Int64_t); +MLTON_CODEGEN_STATIC_INLINE Bool_t WordS64_negCheckOverflows(Int64_t); +MLTON_CODEGEN_STATIC_INLINE Int64_t WordS64_quot(Int64_t,Int64_t); +MLTON_CODEGEN_STATIC_INLINE Int64_t WordS64_rem(Int64_t,Int64_t); +MLTON_CODEGEN_STATIC_INLINE Int64_t WordS64_rshift(Int64_t,Word32_t); +MLTON_CODEGEN_STATIC_INLINE Bool_t WordS64_subCheckOverflows(Int64_t,Int64_t); +MLTON_CODEGEN_STATIC_INLINE Real32_t WordS64_toReal32(Int64_t); +MLTON_CODEGEN_STATIC_INLINE Real64_t WordS64_toReal64(Int64_t); +MLTON_CODEGEN_STATIC_INLINE Word16_t WordS64_toWord16(Int64_t); +MLTON_CODEGEN_STATIC_INLINE Word32_t WordS64_toWord32(Int64_t); +MLTON_CODEGEN_STATIC_INLINE Word64_t WordS64_toWord64(Int64_t); +MLTON_CODEGEN_STATIC_INLINE Word8_t WordS64_toWord8(Int64_t); +MLTON_CODEGEN_STATIC_INLINE Bool_t WordS8_addCheckOverflows(Int8_t,Int8_t); +MLTON_CODEGEN_STATIC_INLINE Bool_t WordS8_ge(Int8_t,Int8_t); +MLTON_CODEGEN_STATIC_INLINE Bool_t WordS8_gt(Int8_t,Int8_t); +MLTON_CODEGEN_STATIC_INLINE Bool_t WordS8_le(Int8_t,Int8_t); +MLTON_CODEGEN_STATIC_INLINE Bool_t WordS8_lt(Int8_t,Int8_t); +MLTON_CODEGEN_STATIC_INLINE Int8_t WordS8_mul(Int8_t,Int8_t); +MLTON_CODEGEN_STATIC_INLINE Bool_t WordS8_mulCheckOverflows(Int8_t,Int8_t); +MLTON_CODEGEN_STATIC_INLINE Bool_t WordS8_negCheckOverflows(Int8_t); +MLTON_CODEGEN_STATIC_INLINE Int8_t WordS8_quot(Int8_t,Int8_t); +MLTON_CODEGEN_STATIC_INLINE Int8_t WordS8_rem(Int8_t,Int8_t); +MLTON_CODEGEN_STATIC_INLINE Int8_t WordS8_rshift(Int8_t,Word32_t); +MLTON_CODEGEN_STATIC_INLINE Bool_t WordS8_subCheckOverflows(Int8_t,Int8_t); +MLTON_CODEGEN_STATIC_INLINE Real32_t WordS8_toReal32(Int8_t); +MLTON_CODEGEN_STATIC_INLINE Real64_t WordS8_toReal64(Int8_t); +MLTON_CODEGEN_STATIC_INLINE Word16_t WordS8_toWord16(Int8_t); +MLTON_CODEGEN_STATIC_INLINE Word32_t WordS8_toWord32(Int8_t); +MLTON_CODEGEN_STATIC_INLINE Word64_t WordS8_toWord64(Int8_t); +MLTON_CODEGEN_STATIC_INLINE Word8_t WordS8_toWord8(Int8_t); +MLTON_CODEGEN_STATIC_INLINE Bool_t WordU16_addCheckOverflows(Word16_t,Word16_t); +MLTON_CODEGEN_STATIC_INLINE Bool_t WordU16_ge(Word16_t,Word16_t); +MLTON_CODEGEN_STATIC_INLINE Bool_t WordU16_gt(Word16_t,Word16_t); +MLTON_CODEGEN_STATIC_INLINE Bool_t WordU16_le(Word16_t,Word16_t); +MLTON_CODEGEN_STATIC_INLINE Bool_t WordU16_lt(Word16_t,Word16_t); +MLTON_CODEGEN_STATIC_INLINE Word16_t WordU16_mul(Word16_t,Word16_t); +MLTON_CODEGEN_STATIC_INLINE Bool_t WordU16_mulCheckOverflows(Word16_t,Word16_t); +MLTON_CODEGEN_STATIC_INLINE Word16_t WordU16_quot(Word16_t,Word16_t); +MLTON_CODEGEN_STATIC_INLINE Word16_t WordU16_rem(Word16_t,Word16_t); +MLTON_CODEGEN_STATIC_INLINE Word16_t WordU16_rshift(Word16_t,Word32_t); +MLTON_CODEGEN_STATIC_INLINE Real32_t WordU16_toReal32(Word16_t); +MLTON_CODEGEN_STATIC_INLINE Real64_t WordU16_toReal64(Word16_t); +MLTON_CODEGEN_STATIC_INLINE Word16_t WordU16_toWord16(Word16_t); +MLTON_CODEGEN_STATIC_INLINE Word32_t WordU16_toWord32(Word16_t); +MLTON_CODEGEN_STATIC_INLINE Word64_t WordU16_toWord64(Word16_t); +MLTON_CODEGEN_STATIC_INLINE Word8_t WordU16_toWord8(Word16_t); +MLTON_CODEGEN_STATIC_INLINE Bool_t WordU32_addCheckOverflows(Word32_t,Word32_t); +MLTON_CODEGEN_STATIC_INLINE Bool_t WordU32_ge(Word32_t,Word32_t); +MLTON_CODEGEN_STATIC_INLINE Bool_t WordU32_gt(Word32_t,Word32_t); +MLTON_CODEGEN_STATIC_INLINE Bool_t WordU32_le(Word32_t,Word32_t); +MLTON_CODEGEN_STATIC_INLINE Bool_t WordU32_lt(Word32_t,Word32_t); +MLTON_CODEGEN_STATIC_INLINE Word32_t WordU32_mul(Word32_t,Word32_t); +MLTON_CODEGEN_STATIC_INLINE Bool_t WordU32_mulCheckOverflows(Word32_t,Word32_t); +MLTON_CODEGEN_STATIC_INLINE Word32_t WordU32_quot(Word32_t,Word32_t); +MLTON_CODEGEN_STATIC_INLINE Word32_t WordU32_rem(Word32_t,Word32_t); +MLTON_CODEGEN_STATIC_INLINE Word32_t WordU32_rshift(Word32_t,Word32_t); +MLTON_CODEGEN_STATIC_INLINE Real32_t WordU32_toReal32(Word32_t); +MLTON_CODEGEN_STATIC_INLINE Real64_t WordU32_toReal64(Word32_t); +MLTON_CODEGEN_STATIC_INLINE Word16_t WordU32_toWord16(Word32_t); +MLTON_CODEGEN_STATIC_INLINE Word32_t Word... [truncated message content] |
|
From: Matthew F. <fl...@ml...> - 2006-11-05 07:31:21
|
Can't use C-types with C-codegen
----------------------------------------------------------------------
U mlton/branches/on-20050822-x86_64-branch/runtime/gen/gen-types.c
----------------------------------------------------------------------
Modified: mlton/branches/on-20050822-x86_64-branch/runtime/gen/gen-types.c
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/runtime/gen/gen-types.c 2006-11-03 22:47:30 UTC (rev 4803)
+++ mlton/branches/on-20050822-x86_64-branch/runtime/gen/gen-types.c 2006-11-05 15:31:10 UTC (rev 4804)
@@ -150,12 +150,13 @@
#define booltype(t, bt, name) \
do { \
writeString (cTypesHFd, "typedef "); \
+ writeString (cTypesHFd, " /* "); \
writeString (cTypesHFd, #t); \
- writeString (cTypesHFd, " /* "); \
+ writeString (cTypesHFd, " */ "); \
writeString (cTypesHFd, bt); \
writeUintmaxU (cTypesHFd, CHAR_BIT * sizeof(t)); \
writeString (cTypesHFd, "_t"); \
- writeString (cTypesHFd, " */ "); \
+ writeString (cTypesHFd, " "); \
writeString (cTypesHFd, "C_"); \
writeString (cTypesHFd, name); \
writeString (cTypesHFd, "_t;"); \
@@ -183,12 +184,13 @@
for (size_t i = 0; i < strlen(btUpper); i++) \
btUpper[i] = (char)(toupper((int)(bt[i]))); \
writeString (cTypesHFd, "typedef "); \
+ writeString (cTypesHFd, " /* "); \
writeString (cTypesHFd, #t); \
- writeString (cTypesHFd, " /* "); \
+ writeString (cTypesHFd, " */ "); \
writeString (cTypesHFd, bt); \
writeUintmaxU (cTypesHFd, CHAR_BIT * sizeof(t)); \
writeString (cTypesHFd, "_t"); \
- writeString (cTypesHFd, " */ "); \
+ writeString (cTypesHFd, " "); \
writeString (cTypesHFd, "C_"); \
writeString (cTypesHFd, name); \
writeString (cTypesHFd, "_t;"); \
@@ -230,10 +232,11 @@
#define ptrtype(t, name) \
do { \
writeString (cTypesHFd, "typedef "); \
+ writeString (cTypesHFd, " /* "); \
writeString (cTypesHFd, #t); \
- writeString (cTypesHFd, " /* "); \
+ writeString (cTypesHFd, " */ "); \
writeString (cTypesHFd, "Pointer"); \
- writeString (cTypesHFd, " */ "); \
+ writeString (cTypesHFd, " "); \
writeString (cTypesHFd, "C_"); \
writeString (cTypesHFd, name); \
writeString (cTypesHFd, "_t;"); \
|
|
From: Matthew F. <fl...@ml...> - 2006-11-03 14:48:03
|
Eliminate many uses of 'bool' from FFI in Basis Library
implementation.
----------------------------------------------------------------------
U mlton/branches/on-20050822-x86_64-branch/basis-library/config/c/amd64-linux/c-types.sml
A mlton/branches/on-20050822-x86_64-branch/basis-library/config/c/word-to-bool.sml
U mlton/branches/on-20050822-x86_64-branch/basis-library/integer/integer.sig
U mlton/branches/on-20050822-x86_64-branch/basis-library/integer/word.sig
U mlton/branches/on-20050822-x86_64-branch/basis-library/mlton/ffi.sig
U mlton/branches/on-20050822-x86_64-branch/basis-library/mlton/ffi.sml
U mlton/branches/on-20050822-x86_64-branch/basis-library/mlton/signal.sml
U mlton/branches/on-20050822-x86_64-branch/basis-library/net/net-host-db.sml
U mlton/branches/on-20050822-x86_64-branch/basis-library/net/net-prot-db.sml
U mlton/branches/on-20050822-x86_64-branch/basis-library/net/net-serv-db.sml
U mlton/branches/on-20050822-x86_64-branch/basis-library/posix/file-sys.sml
U mlton/branches/on-20050822-x86_64-branch/basis-library/posix/proc-env.sml
U mlton/branches/on-20050822-x86_64-branch/basis-library/posix/process.sml
U mlton/branches/on-20050822-x86_64-branch/basis-library/posix/sys-db.sml
U mlton/branches/on-20050822-x86_64-branch/basis-library/primitive/basis-ffi.sml
U mlton/branches/on-20050822-x86_64-branch/basis-library/primitive/primitive.mlb
U mlton/branches/on-20050822-x86_64-branch/runtime/basis/Net/NetHostDB.c
U mlton/branches/on-20050822-x86_64-branch/runtime/basis/Net/NetProtDB.c
U mlton/branches/on-20050822-x86_64-branch/runtime/basis/Net/NetServDB.c
U mlton/branches/on-20050822-x86_64-branch/runtime/basis/Net/Socket/INetSock.c
U mlton/branches/on-20050822-x86_64-branch/runtime/basis/Net/Socket/Socket.c
U mlton/branches/on-20050822-x86_64-branch/runtime/basis/Net/Socket/UnixSock.c
U mlton/branches/on-20050822-x86_64-branch/runtime/basis/Posix/FileSys/ST.c
U mlton/branches/on-20050822-x86_64-branch/runtime/basis/Posix/ProcEnv/isatty.c
U mlton/branches/on-20050822-x86_64-branch/runtime/basis/Posix/ProcEnv/setgroups.c
U mlton/branches/on-20050822-x86_64-branch/runtime/basis/Posix/Process/ifExited.c
U mlton/branches/on-20050822-x86_64-branch/runtime/basis/Posix/Process/ifSignaled.c
U mlton/branches/on-20050822-x86_64-branch/runtime/basis/Posix/Process/ifStopped.c
U mlton/branches/on-20050822-x86_64-branch/runtime/basis/Posix/Signal.c
U mlton/branches/on-20050822-x86_64-branch/runtime/basis/Posix/SysDB/Group.c
U mlton/branches/on-20050822-x86_64-branch/runtime/basis/Posix/SysDB/Passwd.c
U mlton/branches/on-20050822-x86_64-branch/runtime/basis/System/OS/IO/poll.c
U mlton/branches/on-20050822-x86_64-branch/runtime/gen/basis-ffi.def
U mlton/branches/on-20050822-x86_64-branch/runtime/gen/gen-types.c
----------------------------------------------------------------------
Modified: mlton/branches/on-20050822-x86_64-branch/basis-library/config/c/amd64-linux/c-types.sml
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/basis-library/config/c/amd64-linux/c-types.sml 2006-11-03 11:24:54 UTC (rev 4802)
+++ mlton/branches/on-20050822-x86_64-branch/basis-library/config/c/amd64-linux/c-types.sml 2006-11-03 22:47:30 UTC (rev 4803)
@@ -7,6 +7,7 @@
(* C *)
+structure C_Bool = WordToBool (type t = Word8.word val zero: t = 0wx0 val one: t = 0wx1)
structure C_Char = struct open Int8 type t = int end
functor C_Char_ChooseIntN (A: CHOOSE_INTN_ARG) = ChooseIntN_Int8 (A)
structure C_SChar = struct open Int8 type t = int end
Added: mlton/branches/on-20050822-x86_64-branch/basis-library/config/c/word-to-bool.sml
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/basis-library/config/c/word-to-bool.sml 2006-11-03 11:24:54 UTC (rev 4802)
+++ mlton/branches/on-20050822-x86_64-branch/basis-library/config/c/word-to-bool.sml 2006-11-03 22:47:30 UTC (rev 4803)
@@ -0,0 +1,22 @@
+(* Copyright (C) 1999-2006 Henry Cejtin, Matthew Fluet, Suresh
+ * Jagannathan, and Stephen Weeks.
+ *
+ * MLton is released under a BSD-style license.
+ * See the file MLton-LICENSE for details.
+ *)
+
+functor WordToBool (S : sig
+ eqtype t
+ val one: t
+ val zero: t
+ end) : sig
+ eqtype t
+ val fromBool: bool -> t
+ val toBool: t -> bool
+ end =
+ struct
+ open S
+
+ val fromBool: bool -> t = fn b => if b then zero else one
+ val toBool: t -> bool = fn w => w <> zero
+ end
Modified: mlton/branches/on-20050822-x86_64-branch/basis-library/integer/integer.sig
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/basis-library/integer/integer.sig 2006-11-03 11:24:54 UTC (rev 4802)
+++ mlton/branches/on-20050822-x86_64-branch/basis-library/integer/integer.sig 2006-11-03 22:47:30 UTC (rev 4803)
@@ -51,6 +51,9 @@
include INTEGER
type t = int
+ val zero: int
+ val one: int
+
val precision' : Int.int
val maxInt' : int
val minInt' : int
Modified: mlton/branches/on-20050822-x86_64-branch/basis-library/integer/word.sig
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/basis-library/integer/word.sig 2006-11-03 11:24:54 UTC (rev 4802)
+++ mlton/branches/on-20050822-x86_64-branch/basis-library/integer/word.sig 2006-11-03 22:47:30 UTC (rev 4803)
@@ -59,6 +59,9 @@
include WORD
type t = word
+ val zero: word
+ val one: word
+
val toWord: word -> Word.word
val toWordX: word -> Word.word
val fromWord: Word.word -> word
Modified: mlton/branches/on-20050822-x86_64-branch/basis-library/mlton/ffi.sig
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/basis-library/mlton/ffi.sig 2006-11-03 11:24:54 UTC (rev 4802)
+++ mlton/branches/on-20050822-x86_64-branch/basis-library/mlton/ffi.sig 2006-11-03 22:47:30 UTC (rev 4803)
@@ -9,7 +9,6 @@
sig
val atomicBegin: unit -> unit
val atomicEnd: unit -> unit
- val getBool: int -> bool
val getChar8: int -> Char.char
(*
val getChar16: int -> Char16.char
@@ -27,7 +26,6 @@
val getWord32: int -> Word32.word
val getWord64: int -> Word64.word
val register: int * (unit -> unit) -> unit
- val setBool: bool -> unit
val setChar8: Char.char -> unit
(*
val setChar16: Char16.char -> unit
Modified: mlton/branches/on-20050822-x86_64-branch/basis-library/mlton/ffi.sml
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/basis-library/mlton/ffi.sml 2006-11-03 11:24:54 UTC (rev 4802)
+++ mlton/branches/on-20050822-x86_64-branch/basis-library/mlton/ffi.sml 2006-11-03 22:47:30 UTC (rev 4803)
@@ -45,19 +45,11 @@
val atomicEnd = MLtonThread.atomicEnd
val register = MLtonThread.register
-(* To the C-world, booleans and chars are signed integers. *)
-fun intToBool (i: Int32.t): bool = i <> 0
-
-val getBool = intToBool o getInt32
-
+(* To the C-world, chars are signed integers. *)
val getChar8 = Primitive.Char8.idFromInt8 o getInt8
val getChar16 = Primitive.Char16.idFromInt16 o getInt16
val getChar32 = Primitive.Char32.idFromInt32 o getInt32
-fun boolToInt (b: bool): Int32.t = if b then 1 else 0
-
-val setBool = setInt32 o boolToInt
-
val setChar8 = setInt8 o Primitive.Char8.idToInt8
val setChar16 = setInt16 o Primitive.Char16.idToInt16
val setChar32 = setInt32 o Primitive.Char32.idToInt32
Modified: mlton/branches/on-20050822-x86_64-branch/basis-library/mlton/signal.sml
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/basis-library/mlton/signal.sml 2006-11-03 11:24:54 UTC (rev 4802)
+++ mlton/branches/on-20050822-x86_64-branch/basis-library/mlton/signal.sml 2006-11-03 22:47:30 UTC (rev 4803)
@@ -109,13 +109,13 @@
datatype handler = datatype Handler.t
local
- val r = ref false
+ val r = ref C_Int.zero
in
fun initHandler (s: signal): Handler.t =
SysCall.syscallErr
({clear = false, restart = false, errVal = C_Int.fromInt ~1}, fn () =>
{return = Prim.isDefault (s, r),
- post = fn _ => if !r then Default else Ignore,
+ post = fn _ => if !r <> C_Int.zero then Default else Ignore,
handlers = [(Error.inval, fn () => InvalidSignal)]})
end
@@ -185,14 +185,18 @@
val () = Mask.block (handled ())
val fs =
case !gcHandler of
- Handler f => if Prim.isPendingGC () then [f] else []
+ Handler f => if Prim.isPendingGC () <> C_Int.zero
+ then [f]
+ else []
| _ => []
val fs =
Array.foldri
(fn (s, h, fs) =>
case h of
Handler f =>
- if Prim.isPending (fromInt s) then f::fs else fs
+ if Prim.isPending (fromInt s) <> C_Int.zero
+ then f::fs
+ else fs
| _ => fs) fs handlers
val () = Prim.resetPending ()
val () = Mask.setBlocked mask
Modified: mlton/branches/on-20050822-x86_64-branch/basis-library/net/net-host-db.sml
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/basis-library/net/net-host-db.sml 2006-11-03 11:24:54 UTC (rev 4802)
+++ mlton/branches/on-20050822-x86_64-branch/basis-library/net/net-host-db.sml 2006-11-03 22:47:30 UTC (rev 4803)
@@ -61,8 +61,8 @@
fun addr entry = hd (addrs entry)
local
- fun get (b: bool): entry option =
- if b
+ fun get (i: C_Int.t): entry option =
+ if i <> C_Int.zero
then let
val name = CUtil.C_String.toString (Prim.getEntryName ())
val numAliases = Prim.getEntryAliasesNum ()
Modified: mlton/branches/on-20050822-x86_64-branch/basis-library/net/net-prot-db.sml
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/basis-library/net/net-prot-db.sml 2006-11-03 11:24:54 UTC (rev 4802)
+++ mlton/branches/on-20050822-x86_64-branch/basis-library/net/net-prot-db.sml 2006-11-03 22:47:30 UTC (rev 4803)
@@ -22,8 +22,8 @@
end
local
- fun get (b: bool): entry option =
- if b
+ fun get (i: C_Int.t): entry option =
+ if i <> C_Int.zero
then let
val name = CUtil.C_String.toString (Prim.getEntryName ())
val numAliases = Prim.getEntryAliasesNum ()
Modified: mlton/branches/on-20050822-x86_64-branch/basis-library/net/net-serv-db.sml
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/basis-library/net/net-serv-db.sml 2006-11-03 11:24:54 UTC (rev 4802)
+++ mlton/branches/on-20050822-x86_64-branch/basis-library/net/net-serv-db.sml 2006-11-03 22:47:30 UTC (rev 4803)
@@ -24,8 +24,8 @@
end
local
- fun get (b: bool): entry option =
- if b
+ fun get (i: C_Int.t): entry option =
+ if i <> C_Int.zero
then let
val name = CUtil.C_String.toString (Prim.getEntryName ())
val numAliases = Prim.getEntryAliasesNum ()
Modified: mlton/branches/on-20050822-x86_64-branch/basis-library/posix/file-sys.sml
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/basis-library/posix/file-sys.sml 2006-11-03 11:24:54 UTC (rev 4802)
+++ mlton/branches/on-20050822-x86_64-branch/basis-library/posix/file-sys.sml 2006-11-03 22:47:30 UTC (rev 4803)
@@ -332,7 +332,7 @@
end
local
- fun make prim s = prim (mode s)
+ fun make prim s = prim (mode s) <> C_Int.zero
in
val isDir = make Prim.ST.isDir
val isChr = make Prim.ST.isChr
Modified: mlton/branches/on-20050822-x86_64-branch/basis-library/posix/proc-env.sml
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/basis-library/posix/proc-env.sml 2006-11-03 11:24:54 UTC (rev 4802)
+++ mlton/branches/on-20050822-x86_64-branch/basis-library/posix/proc-env.sml 2006-11-03 22:47:30 UTC (rev 4803)
@@ -256,7 +256,7 @@
fun ctermid () = CS.toString (Prim.ctermid ())
- fun isatty fd = Prim.isatty fd
+ fun isatty fd = (Prim.isatty fd) <> C_Int.zero
fun ttyname fd =
SysCall.syscall'
Modified: mlton/branches/on-20050822-x86_64-branch/basis-library/posix/process.sml
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/basis-library/posix/process.sml 2006-11-03 11:24:54 UTC (rev 4802)
+++ mlton/branches/on-20050822-x86_64-branch/basis-library/posix/process.sml 2006-11-03 22:47:30 UTC (rev 4803)
@@ -73,13 +73,13 @@
| W_STOPPED of signal
fun fromStatus status =
- if Prim.ifExited status
+ if Prim.ifExited status <> C_Int.zero
then (case Prim.exitStatus status of
0 => W_EXITED
| n => W_EXITSTATUS (Word8.castFromSysWord (C_Int.castToSysWord n)))
- else if Prim.ifSignaled status
+ else if Prim.ifSignaled status <> C_Int.zero
then W_SIGNALED (Prim.termSig status)
- else if Prim.ifStopped status
+ else if Prim.ifStopped status <> C_Int.zero
then W_STOPPED (Prim.stopSig status)
else raise Fail "Posix.Process.fromStatus"
Modified: mlton/branches/on-20050822-x86_64-branch/basis-library/posix/sys-db.sml
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/basis-library/posix/sys-db.sml 2006-11-03 11:24:54 UTC (rev 4802)
+++ mlton/branches/on-20050822-x86_64-branch/basis-library/posix/sys-db.sml 2006-11-03 22:47:30 UTC (rev 4803)
@@ -25,16 +25,21 @@
structure Passwd = Prim.Passwd
- fun fromC (f: unit -> bool): passwd =
- SysCall.syscall'
- ({errVal = false}, fn () =>
- (C_Errno.inject (f ()),
- fn _ => {name = CUtil.C_String.toString (Passwd.getName ()),
- uid = Passwd.getUId (),
- gid = Passwd.getGId (),
- home = CUtil.C_String.toString (Passwd.getDir ()),
- shell = CUtil.C_String.toString (Passwd.getShell ())}))
-
+ fun fromC (f: unit -> C_Int.t C_Errno.t, fname, fitem): passwd =
+ SysCall.syscallErr
+ ({clear = true, restart = false, errVal = C_Int.zero}, fn () =>
+ {return = f (),
+ post = fn _ => {name = CUtil.C_String.toString (Passwd.getName ()),
+ uid = Passwd.getUId (),
+ gid = Passwd.getGId (),
+ home = CUtil.C_String.toString (Passwd.getDir ()),
+ shell = CUtil.C_String.toString (Passwd.getShell ())},
+ handlers = [(Error.cleared, fn () =>
+ raise Error.SysErr (concat ["Posix.SysDB.",
+ fname,
+ ": no group with ",
+ fitem], NONE))]})
+
val name: passwd -> string = #name
val uid: passwd -> uid = #uid
val gid: passwd -> gid = #gid
@@ -44,10 +49,11 @@
fun getpwnam name =
let val name = NullString.nullTerm name
- in Passwd.fromC (fn () => Prim.getpwnam name)
+ in Passwd.fromC (fn () => Prim.getpwnam name, "getpwnam", "name")
end
- fun getpwuid uid = Passwd.fromC (fn () => Prim.getpwuid uid)
+ fun getpwuid uid =
+ Passwd.fromC (fn () => Prim.getpwuid uid, "getpwuid", "user id")
structure Group =
struct
@@ -57,13 +63,18 @@
structure Group = Prim.Group
- fun fromC (f: unit -> bool): group =
- SysCall.syscall'
- ({errVal = false}, fn () =>
- (C_Errno.inject (f ()),
- fn _ => {name = CUtil.C_String.toString (Group.getName ()),
- gid = Group.getGId (),
- members = CUtil.C_StringArray.toList (Group.getMem ())}))
+ fun fromC (f: unit -> C_Int.t C_Errno.t, fname, fitem): group =
+ SysCall.syscallErr
+ ({clear = true, restart = false, errVal = C_Int.zero}, fn () =>
+ {return = f (),
+ post = fn _ => {name = CUtil.C_String.toString (Group.getName ()),
+ gid = Group.getGId (),
+ members = CUtil.C_StringArray.toList (Group.getMem ())},
+ handlers = [(Error.cleared, fn () =>
+ raise Error.SysErr (concat ["Posix.SysDB.",
+ fname,
+ ": no group with ",
+ fitem], NONE))]})
val name: group -> string = #name
val gid: group -> gid = #gid
@@ -72,8 +83,9 @@
fun getgrnam name =
let val name = NullString.nullTerm name
- in Group.fromC (fn () => Prim.getgrnam name)
+ in Group.fromC (fn () => Prim.getgrnam name, "getgrnam", "name")
end
- fun getgrgid gid = Group.fromC (fn () => Prim.getgrgid gid)
+ fun getgrgid gid =
+ Group.fromC (fn () => Prim.getgrgid gid, "getgrgid", "group id")
end
Modified: mlton/branches/on-20050822-x86_64-branch/basis-library/primitive/basis-ffi.sml
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/basis-library/primitive/basis-ffi.sml 2006-11-03 11:24:54 UTC (rev 4802)
+++ mlton/branches/on-20050822-x86_64-branch/basis-library/primitive/basis-ffi.sml 2006-11-03 22:47:30 UTC (rev 4803)
@@ -165,8 +165,8 @@
end
structure NetHostDB =
struct
-val getByAddress = _import "NetHostDB_getByAddress" : (Word8.t) vector * C_Socklen.t -> Bool.t;
-val getByName = _import "NetHostDB_getByName" : NullString8.t -> Bool.t;
+val getByAddress = _import "NetHostDB_getByAddress" : (Word8.t) vector * C_Socklen.t -> C_Int.t;
+val getByName = _import "NetHostDB_getByName" : NullString8.t -> C_Int.t;
val getEntryAddrsN = _import "NetHostDB_getEntryAddrsN" : C_Int.t * (Word8.t) array -> unit;
val getEntryAddrsNum = _import "NetHostDB_getEntryAddrsNum" : unit -> C_Int.t;
val getEntryAddrType = _import "NetHostDB_getEntryAddrType" : unit -> C_Int.t;
@@ -180,8 +180,8 @@
end
structure NetProtDB =
struct
-val getByName = _import "NetProtDB_getByName" : NullString8.t -> Bool.t;
-val getByNumber = _import "NetProtDB_getByNumber" : C_Int.t -> Bool.t;
+val getByName = _import "NetProtDB_getByName" : NullString8.t -> C_Int.t;
+val getByNumber = _import "NetProtDB_getByNumber" : C_Int.t -> C_Int.t;
val getEntryAliasesN = _import "NetProtDB_getEntryAliasesN" : C_Int.t -> C_String.t;
val getEntryAliasesNum = _import "NetProtDB_getEntryAliasesNum" : unit -> C_Int.t;
val getEntryName = _import "NetProtDB_getEntryName" : unit -> C_String.t;
@@ -189,10 +189,10 @@
end
structure NetServDB =
struct
-val getByName = _import "NetServDB_getByName" : NullString8.t * NullString8.t -> Bool.t;
-val getByNameNull = _import "NetServDB_getByNameNull" : NullString8.t -> Bool.t;
-val getByPort = _import "NetServDB_getByPort" : C_Int.t * NullString8.t -> Bool.t;
-val getByPortNull = _import "NetServDB_getByPortNull" : C_Int.t -> Bool.t;
+val getByName = _import "NetServDB_getByName" : NullString8.t * NullString8.t -> C_Int.t;
+val getByNameNull = _import "NetServDB_getByNameNull" : NullString8.t -> C_Int.t;
+val getByPort = _import "NetServDB_getByPort" : C_Int.t * NullString8.t -> C_Int.t;
+val getByPortNull = _import "NetServDB_getByPortNull" : C_Int.t -> C_Int.t;
val getEntryAliasesN = _import "NetServDB_getEntryAliasesN" : C_Int.t -> C_String.t;
val getEntryAliasesNum = _import "NetServDB_getEntryAliasesNum" : unit -> C_Int.t;
val getEntryName = _import "NetServDB_getEntryName" : unit -> C_String.t;
@@ -453,13 +453,13 @@
end
structure ST =
struct
-val isBlk = _import "Posix_FileSys_ST_isBlk" : C_Mode.t -> Bool.t;
-val isChr = _import "Posix_FileSys_ST_isChr" : C_Mode.t -> Bool.t;
-val isDir = _import "Posix_FileSys_ST_isDir" : C_Mode.t -> Bool.t;
-val isFIFO = _import "Posix_FileSys_ST_isFIFO" : C_Mode.t -> Bool.t;
-val isLink = _import "Posix_FileSys_ST_isLink" : C_Mode.t -> Bool.t;
-val isReg = _import "Posix_FileSys_ST_isReg" : C_Mode.t -> Bool.t;
-val isSock = _import "Posix_FileSys_ST_isSock" : C_Mode.t -> Bool.t;
+val isBlk = _import "Posix_FileSys_ST_isBlk" : C_Mode.t -> C_Int.t;
+val isChr = _import "Posix_FileSys_ST_isChr" : C_Mode.t -> C_Int.t;
+val isDir = _import "Posix_FileSys_ST_isDir" : C_Mode.t -> C_Int.t;
+val isFIFO = _import "Posix_FileSys_ST_isFIFO" : C_Mode.t -> C_Int.t;
+val isLink = _import "Posix_FileSys_ST_isLink" : C_Mode.t -> C_Int.t;
+val isReg = _import "Posix_FileSys_ST_isReg" : C_Mode.t -> C_Int.t;
+val isSock = _import "Posix_FileSys_ST_isSock" : C_Mode.t -> C_Int.t;
end
structure Stat =
struct
@@ -561,7 +561,7 @@
val getpid = _import "Posix_ProcEnv_getpid" : unit -> C_PId.t;
val getppid = _import "Posix_ProcEnv_getppid" : unit -> C_PId.t;
val getuid = _import "Posix_ProcEnv_getuid" : unit -> C_UId.t;
-val isatty = _import "Posix_ProcEnv_isatty" : C_Fd.t -> Bool.t;
+val isatty = _import "Posix_ProcEnv_isatty" : C_Fd.t -> C_Int.t;
val SC_2_C_BIND = _const "Posix_ProcEnv_SC_2_C_BIND" : C_Int.t;
val SC_2_C_DEV = _const "Posix_ProcEnv_SC_2_C_DEV" : C_Int.t;
val SC_2_CHAR_TERM = _const "Posix_ProcEnv_SC_2_CHAR_TERM" : C_Int.t;
@@ -719,9 +719,9 @@
val exit = _import "Posix_Process_exit" : C_Status.t -> unit;
val exitStatus = _import "Posix_Process_exitStatus" : C_Status.t -> C_Int.t;
val fork = _import "Posix_Process_fork" : unit -> (C_PId.t) C_Errno.t;
-val ifExited = _import "Posix_Process_ifExited" : C_Status.t -> Bool.t;
-val ifSignaled = _import "Posix_Process_ifSignaled" : C_Status.t -> Bool.t;
-val ifStopped = _import "Posix_Process_ifStopped" : C_Status.t -> Bool.t;
+val ifExited = _import "Posix_Process_ifExited" : C_Status.t -> C_Int.t;
+val ifSignaled = _import "Posix_Process_ifSignaled" : C_Status.t -> C_Int.t;
+val ifStopped = _import "Posix_Process_ifStopped" : C_Status.t -> C_Int.t;
val kill = _import "Posix_Process_kill" : C_PId.t * C_Signal.t -> (C_Int.t) C_Errno.t;
val nanosleep = _import "Posix_Process_nanosleep" : (C_Time.t) ref * (C_Long.t) ref -> (C_Int.t) C_Errno.t;
val pause = _import "Posix_Process_pause" : unit -> (C_Int.t) C_Errno.t;
@@ -742,10 +742,10 @@
val handlee = _import "Posix_Signal_handlee" : C_Signal.t -> (C_Int.t) C_Errno.t;
val handleGC = _import "Posix_Signal_handleGC" : unit -> unit;
val ignore = _import "Posix_Signal_ignore" : C_Signal.t -> (C_Int.t) C_Errno.t;
-val isDefault = _import "Posix_Signal_isDefault" : C_Signal.t * (Bool.t) ref -> (C_Int.t) C_Errno.t;
-val isIgnore = _import "Posix_Signal_isIgnore" : C_Signal.t * (Bool.t) ref -> (C_Int.t) C_Errno.t;
-val isPending = _import "Posix_Signal_isPending" : C_Signal.t -> Bool.t;
-val isPendingGC = _import "Posix_Signal_isPendingGC" : unit -> Bool.t;
+val isDefault = _import "Posix_Signal_isDefault" : C_Signal.t * (C_Int.t) ref -> (C_Int.t) C_Errno.t;
+val isIgnore = _import "Posix_Signal_isIgnore" : C_Signal.t * (C_Int.t) ref -> (C_Int.t) C_Errno.t;
+val isPending = _import "Posix_Signal_isPending" : C_Signal.t -> C_Int.t;
+val isPendingGC = _import "Posix_Signal_isPendingGC" : unit -> C_Int.t;
val NSIG = _const "Posix_Signal_NSIG" : C_Int.t;
val resetPending = _import "Posix_Signal_resetPending" : unit -> unit;
val SIG_BLOCK = _const "Posix_Signal_SIG_BLOCK" : C_Int.t;
@@ -789,10 +789,10 @@
end
structure SysDB =
struct
-val getgrgid = _import "Posix_SysDB_getgrgid" : C_GId.t -> Bool.t;
-val getgrnam = _import "Posix_SysDB_getgrnam" : NullString8.t -> Bool.t;
-val getpwnam = _import "Posix_SysDB_getpwnam" : NullString8.t -> Bool.t;
-val getpwuid = _import "Posix_SysDB_getpwuid" : C_GId.t -> Bool.t;
+val getgrgid = _import "Posix_SysDB_getgrgid" : C_GId.t -> (C_Int.t) C_Errno.t;
+val getgrnam = _import "Posix_SysDB_getgrnam" : NullString8.t -> (C_Int.t) C_Errno.t;
+val getpwnam = _import "Posix_SysDB_getpwnam" : NullString8.t -> (C_Int.t) C_Errno.t;
+val getpwuid = _import "Posix_SysDB_getpwuid" : C_GId.t -> (C_Int.t) C_Errno.t;
structure Group =
struct
val getGId = _import "Posix_SysDB_Group_getGId" : unit -> C_GId.t;
Modified: mlton/branches/on-20050822-x86_64-branch/basis-library/primitive/primitive.mlb
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/basis-library/primitive/primitive.mlb 2006-11-03 11:24:54 UTC (rev 4802)
+++ mlton/branches/on-20050822-x86_64-branch/basis-library/primitive/primitive.mlb 2006-11-03 22:47:30 UTC (rev 4803)
@@ -31,6 +31,7 @@
../config/bind/word-prim.sml
in ann "forceUsed" in
../config/choose.sml
+ ../config/c/word-to-bool.sml
end end
prim-iwconv.sml
Modified: mlton/branches/on-20050822-x86_64-branch/runtime/basis/Net/NetHostDB.c
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/runtime/basis/Net/NetHostDB.c 2006-11-03 11:24:54 UTC (rev 4802)
+++ mlton/branches/on-20050822-x86_64-branch/runtime/basis/Net/NetHostDB.c 2006-11-03 22:47:30 UTC (rev 4803)
@@ -38,14 +38,14 @@
return;
}
-Bool_t NetHostDB_getByAddress(Vector(Word8_t) addr, C_Socklen_t len) {
+C_Int_t NetHostDB_getByAddress(Vector(Word8_t) addr, C_Socklen_t len) {
hostent = gethostbyaddr((const char*)addr, len, AF_INET);
- return (hostent != NULL and hostent->h_name != NULL);
+ return (C_Int_t)(hostent != NULL and hostent->h_name != NULL);
}
-Bool_t NetHostDB_getByName(NullString8_t name) {
+C_Int_t NetHostDB_getByName(NullString8_t name) {
hostent = gethostbyname((const char*)name);
- return (hostent != NULL and hostent->h_name != NULL);
+ return (C_Int_t)(hostent != NULL and hostent->h_name != NULL);
}
C_Errno_t(C_Int_t) NetHostDB_getHostName(Array(Char8_t) buf, C_Size_t len) {
Modified: mlton/branches/on-20050822-x86_64-branch/runtime/basis/Net/NetProtDB.c
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/runtime/basis/Net/NetProtDB.c 2006-11-03 11:24:54 UTC (rev 4802)
+++ mlton/branches/on-20050822-x86_64-branch/runtime/basis/Net/NetProtDB.c 2006-11-03 22:47:30 UTC (rev 4803)
@@ -20,12 +20,12 @@
return protoent->p_proto;
}
-Bool_t NetProtDB_getByName(NullString8_t name) {
+C_Int_t NetProtDB_getByName(NullString8_t name) {
protoent = getprotobyname((const char*)name);
- return (protoent != NULL and protoent->p_name != NULL);
+ return (C_Int_t)(protoent != NULL and protoent->p_name != NULL);
}
-Bool_t NetProtDB_getByNumber(C_Int_t proto) {
+C_Int_t NetProtDB_getByNumber(C_Int_t proto) {
protoent = getprotobynumber(proto);
- return (protoent != NULL and protoent->p_name != NULL);
+ return (C_Int_t)(protoent != NULL and protoent->p_name != NULL);
}
Modified: mlton/branches/on-20050822-x86_64-branch/runtime/basis/Net/NetServDB.c
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/runtime/basis/Net/NetServDB.c 2006-11-03 11:24:54 UTC (rev 4802)
+++ mlton/branches/on-20050822-x86_64-branch/runtime/basis/Net/NetServDB.c 2006-11-03 22:47:30 UTC (rev 4803)
@@ -27,20 +27,20 @@
return (C_String_t)(servent->s_proto);
}
-Bool_t NetServDB_getByName(NullString8_t name, NullString8_t proto) {
+C_Int_t NetServDB_getByName(NullString8_t name, NullString8_t proto) {
servent = getservbyname((const char*)name, (const char*)proto);
- return (servent != NULL and servent->s_name != NULL);
+ return (C_Int_t)(servent != NULL and servent->s_name != NULL);
}
-Bool_t NetServDB_getByNameNull(NullString8_t name) {
+C_Int_t NetServDB_getByNameNull(NullString8_t name) {
return NetServDB_getByName(name, (NullString8_t)NULL);
}
-Bool_t NetServDB_getByPort(C_Int_t port, NullString8_t proto) {
+C_Int_t NetServDB_getByPort(C_Int_t port, NullString8_t proto) {
servent = getservbyport(port, (const char*)proto);
- return (servent != NULL and servent->s_name != NULL);
+ return (C_Int_t)(servent != NULL and servent->s_name != NULL);
}
-Bool_t NetServDB_getByPortNull(C_Int_t port) {
+C_Int_t NetServDB_getByPortNull(C_Int_t port) {
return NetServDB_getByPort(port, (NullString8_t)NULL);
}
Modified: mlton/branches/on-20050822-x86_64-branch/runtime/basis/Net/Socket/INetSock.c
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/runtime/basis/Net/Socket/INetSock.c 2006-11-03 11:24:54 UTC (rev 4802)
+++ mlton/branches/on-20050822-x86_64-branch/runtime/basis/Net/Socket/INetSock.c 2006-11-03 22:47:30 UTC (rev 4803)
@@ -7,7 +7,7 @@
sa->sin_family = AF_INET;
sa->sin_port = port;
- sa->sin_addr = *(struct in_addr*)in_addr;
+ sa->sin_addr = *(const struct in_addr*)in_addr;
*((socklen_t*)addrlen) = sizeof(struct sockaddr_in);
}
@@ -15,7 +15,7 @@
static struct in_addr fromAddr_in_addr;
void Socket_INetSock_fromAddr (Vector(Word8_t) addr) {
- struct sockaddr_in *sa = (struct sockaddr_in*)addr;
+ const struct sockaddr_in *sa = (const struct sockaddr_in*)addr;
assert(sa->sin_family == AF_INET);
fromAddr_port = sa->sin_port;
Modified: mlton/branches/on-20050822-x86_64-branch/runtime/basis/Net/Socket/Socket.c
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/runtime/basis/Net/Socket/Socket.c 2006-11-03 11:24:54 UTC (rev 4802)
+++ mlton/branches/on-20050822-x86_64-branch/runtime/basis/Net/Socket/Socket.c 2006-11-03 22:47:30 UTC (rev 4803)
@@ -7,7 +7,7 @@
C_Errno_t(C_Int_t) Socket_bind (C_Sock_t s, Vector(Word8_t) addr, C_Socklen_t addrlen) {
MLton_initSockets ();
- return bind (s, (struct sockaddr*)addr, (socklen_t)addrlen);
+ return bind (s, (const struct sockaddr*)addr, (socklen_t)addrlen);
}
C_Errno_t(C_Int_t) Socket_close(C_Sock_t s) {
@@ -16,11 +16,11 @@
C_Errno_t(C_Int_t) Socket_connect (C_Sock_t s, Vector(Word8_t) addr, C_Socklen_t addrlen) {
MLton_initSockets ();
- return connect (s, (struct sockaddr*)addr, (socklen_t)addrlen);
+ return connect (s, (const struct sockaddr*)addr, (socklen_t)addrlen);
}
C_Int_t Socket_familyOfAddr(Vector(Word8_t) addr) {
- return ((struct sockaddr*)addr)->sa_family;
+ return ((const struct sockaddr*)addr)->sa_family;
}
C_Errno_t(C_Int_t) Socket_listen (C_Sock_t s, C_Int_t backlog) {
@@ -68,7 +68,7 @@
Vector(Word8_t) addr, C_Socklen_t addrlen) {
MLton_initSockets ();
return sendto (s, (void*)((char *)msg + start), len, flags,
- (struct sockaddr*)addr, (socklen_t)addrlen);
+ (const struct sockaddr*)addr, (socklen_t)addrlen);
}
C_Errno_t(C_SSize_t)
@@ -100,7 +100,7 @@
Socket_Ctl_setSockOpt (C_Sock_t s, C_Int_t level, C_Int_t optname,
Vector(Word8_t) optval, C_Socklen_t optlen) {
MLton_initSockets ();
- return setsockopt (s, level, optname, (void*)optval, (socklen_t)optlen);
+ return setsockopt (s, level, optname, (const void*)optval, (socklen_t)optlen);
}
C_Errno_t(C_Int_t)
@@ -112,7 +112,7 @@
C_Errno_t(C_Int_t)
Socket_Ctl_setIOCtl (C_Sock_t s, C_Int_t request, Vector(Word8_t) argp) {
MLton_initSockets ();
- return ioctl (s, request, (void*)argp);
+ return ioctl (s, request, (const void*)argp);
}
C_Errno_t(C_Int_t) Socket_Ctl_getPeerName (C_Sock_t s, Array(Word8_t) name, Ref(C_Socklen_t) namelen) {
Modified: mlton/branches/on-20050822-x86_64-branch/runtime/basis/Net/Socket/UnixSock.c
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/runtime/basis/Net/Socket/UnixSock.c 2006-11-03 11:24:54 UTC (rev 4802)
+++ mlton/branches/on-20050822-x86_64-branch/runtime/basis/Net/Socket/UnixSock.c 2006-11-03 22:47:30 UTC (rev 4803)
@@ -23,7 +23,7 @@
C_Size_t Socket_UnixSock_pathLen (Vector(Word8_t) addr) {
size_t i;
- struct sockaddr_un *sa = (struct sockaddr_un*)addr;
+ const struct sockaddr_un *sa = (const struct sockaddr_un*)addr;
i = 0;
if (sa->sun_path[i] == '\000') {
Modified: mlton/branches/on-20050822-x86_64-branch/runtime/basis/Posix/FileSys/ST.c
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/runtime/basis/Posix/FileSys/ST.c 2006-11-03 11:24:54 UTC (rev 4802)
+++ mlton/branches/on-20050822-x86_64-branch/runtime/basis/Posix/FileSys/ST.c 2006-11-03 22:47:30 UTC (rev 4803)
@@ -1,29 +1,29 @@
#include "platform.h"
-Bool Posix_FileSys_ST_isBlk (C_Mode_t m) {
- return 0 != S_ISBLK(m);
+C_Int_t Posix_FileSys_ST_isBlk (C_Mode_t m) {
+ return S_ISBLK(m);
}
-Bool Posix_FileSys_ST_isChr (C_Mode_t m) {
- return 0 != S_ISCHR(m);
+C_Int_t Posix_FileSys_ST_isChr (C_Mode_t m) {
+ return S_ISCHR(m);
}
-Bool Posix_FileSys_ST_isDir (C_Mode_t m) {
- return 0 != S_ISDIR(m);
+C_Int_t Posix_FileSys_ST_isDir (C_Mode_t m) {
+ return S_ISDIR(m);
}
-Bool Posix_FileSys_ST_isFIFO (C_Mode_t m) {
- return 0 != S_ISFIFO(m);
+C_Int_t Posix_FileSys_ST_isFIFO (C_Mode_t m) {
+ return S_ISFIFO(m);
}
-Bool Posix_FileSys_ST_isLink (C_Mode_t m) {
- return 0 != S_ISLNK(m);
+C_Int_t Posix_FileSys_ST_isLink (C_Mode_t m) {
+ return S_ISLNK(m);
}
-Bool Posix_FileSys_ST_isReg (C_Mode_t m) {
- return 0 != S_ISREG(m);
+C_Int_t Posix_FileSys_ST_isReg (C_Mode_t m) {
+ return S_ISREG(m);
}
-Bool Posix_FileSys_ST_isSock (C_Mode_t m) {
- return 0 != S_ISSOCK(m);
+C_Int_t Posix_FileSys_ST_isSock (C_Mode_t m) {
+ return S_ISSOCK(m);
}
Modified: mlton/branches/on-20050822-x86_64-branch/runtime/basis/Posix/ProcEnv/isatty.c
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/runtime/basis/Posix/ProcEnv/isatty.c 2006-11-03 11:24:54 UTC (rev 4802)
+++ mlton/branches/on-20050822-x86_64-branch/runtime/basis/Posix/ProcEnv/isatty.c 2006-11-03 22:47:30 UTC (rev 4803)
@@ -1,5 +1,5 @@
#include "platform.h"
-Bool Posix_ProcEnv_isatty (C_Fd_t f) {
- return 0 != isatty (f);
+C_Int_t Posix_ProcEnv_isatty (C_Fd_t f) {
+ return isatty (f);
}
Modified: mlton/branches/on-20050822-x86_64-branch/runtime/basis/Posix/ProcEnv/setgroups.c
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/runtime/basis/Posix/ProcEnv/setgroups.c 2006-11-03 11:24:54 UTC (rev 4802)
+++ mlton/branches/on-20050822-x86_64-branch/runtime/basis/Posix/ProcEnv/setgroups.c 2006-11-03 22:47:30 UTC (rev 4803)
@@ -1,5 +1,5 @@
#include "platform.h"
C_Errno_t(C_Int_t) Posix_ProcEnv_setgroups (C_Int_t i, Vector(C_GId_t) v) {
- return setgroups (i, (gid_t*)v);
+ return setgroups (i, (const gid_t*)v);
}
Modified: mlton/branches/on-20050822-x86_64-branch/runtime/basis/Posix/Process/ifExited.c
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/runtime/basis/Posix/Process/ifExited.c 2006-11-03 11:24:54 UTC (rev 4802)
+++ mlton/branches/on-20050822-x86_64-branch/runtime/basis/Posix/Process/ifExited.c 2006-11-03 22:47:30 UTC (rev 4803)
@@ -1,8 +1,5 @@
#include "platform.h"
-Bool Posix_Process_ifExited (C_Status_t s) {
- int i;
-
- i = s;
- return 0 != WIFEXITED (i);
+C_Int_t Posix_Process_ifExited (C_Status_t s) {
+ return WIFEXITED (s);
}
Modified: mlton/branches/on-20050822-x86_64-branch/runtime/basis/Posix/Process/ifSignaled.c
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/runtime/basis/Posix/Process/ifSignaled.c 2006-11-03 11:24:54 UTC (rev 4802)
+++ mlton/branches/on-20050822-x86_64-branch/runtime/basis/Posix/Process/ifSignaled.c 2006-11-03 22:47:30 UTC (rev 4803)
@@ -1,8 +1,5 @@
#include "platform.h"
-Bool Posix_Process_ifSignaled (C_Status_t s) {
- int i;
-
- i = s;
- return 0 != WIFSIGNALED (i);
+C_Int_t Posix_Process_ifSignaled (C_Status_t s) {
+ return WIFSIGNALED (s);
}
Modified: mlton/branches/on-20050822-x86_64-branch/runtime/basis/Posix/Process/ifStopped.c
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/runtime/basis/Posix/Process/ifStopped.c 2006-11-03 11:24:54 UTC (rev 4802)
+++ mlton/branches/on-20050822-x86_64-branch/runtime/basis/Posix/Process/ifStopped.c 2006-11-03 22:47:30 UTC (rev 4803)
@@ -1,8 +1,5 @@
#include "platform.h"
-Bool Posix_Process_ifStopped (C_Status_t s) {
- int i;
-
- i = s;
- return 0 != WIFSTOPPED (i);
+C_Int_t Posix_Process_ifStopped (C_Status_t s) {
+ return WIFSTOPPED (s);
}
Modified: mlton/branches/on-20050822-x86_64-branch/runtime/basis/Posix/Signal.c
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/runtime/basis/Posix/Signal.c 2006-11-03 11:24:54 UTC (rev 4802)
+++ mlton/branches/on-20050822-x86_64-branch/runtime/basis/Posix/Signal.c 2006-11-03 22:47:30 UTC (rev 4803)
@@ -24,13 +24,13 @@
return sigaction (signum, &sa, NULL);
}
-C_Errno_t(C_Int_t) Posix_Signal_isDefault (C_Int_t signum, Ref(Bool_t) isDef) {
+C_Errno_t(C_Int_t) Posix_Signal_isDefault (C_Int_t signum, Ref(C_Int_t) isDef) {
int res;
struct sigaction sa;
sa.sa_flags = SA_FLAGS;
res = sigaction (signum, NULL, &sa);
- *((Bool_t*)isDef) = sa.sa_handler == SIG_DFL;
+ *((C_Int_t*)isDef) = sa.sa_handler == SIG_DFL;
return res;
}
@@ -44,13 +44,13 @@
return sigaction (signum, &sa, NULL);
}
-C_Errno_t(C_Int_t) Posix_Signal_isIgnore (C_Int_t signum, Ref(Bool_t) isIgn) {
+C_Errno_t(C_Int_t) Posix_Signal_isIgnore (C_Int_t signum, Ref(C_Int_t) isIgn) {
int res;
struct sigaction sa;
sa.sa_flags = SA_FLAGS;
res = sigaction (signum, NULL, &sa);
- *((Bool_t*)isIgn) = sa.sa_handler == SIG_IGN;
+ *((C_Int_t*)isIgn) = sa.sa_handler == SIG_IGN;
return res;
}
@@ -72,11 +72,11 @@
GC_setGCSignalHandled (&gcState, TRUE);
}
-Bool_t Posix_Signal_isPending (C_Int_t signum) {
+C_Int_t Posix_Signal_isPending (C_Int_t signum) {
return sigismember (GC_getSignalsPendingAddr (&gcState), signum);
}
-Bool_t Posix_Signal_isPendingGC (void) {
+C_Int_t Posix_Signal_isPendingGC (void) {
return GC_getGCSignalPending (&gcState);
}
Modified: mlton/branches/on-20050822-x86_64-branch/runtime/basis/Posix/SysDB/Group.c
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/runtime/basis/Posix/SysDB/Group.c 2006-11-03 11:24:54 UTC (rev 4802)
+++ mlton/branches/on-20050822-x86_64-branch/runtime/basis/Posix/SysDB/Group.c 2006-11-03 22:47:30 UTC (rev 4803)
@@ -14,10 +14,10 @@
return (C_StringArray_t)(group->gr_mem);
}
-Bool_t Posix_SysDB_getgrgid(C_GId_t g) {
+C_Errno_t(C_Int_t) Posix_SysDB_getgrgid(C_GId_t g) {
return NULL != (group = getgrgid ((gid_t)g));
}
-Bool_t Posix_SysDB_getgrnam(NullString8_t s) {
+C_Errno_t(C_Int_t) Posix_SysDB_getgrnam(NullString8_t s) {
return NULL != (group = getgrnam ((const char*)s));
}
Modified: mlton/branches/on-20050822-x86_64-branch/runtime/basis/Posix/SysDB/Passwd.c
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/runtime/basis/Posix/SysDB/Passwd.c 2006-11-03 11:24:54 UTC (rev 4802)
+++ mlton/branches/on-20050822-x86_64-branch/runtime/basis/Posix/SysDB/Passwd.c 2006-11-03 22:47:30 UTC (rev 4803)
@@ -22,10 +22,10 @@
return (C_String_t)(passwd->pw_shell);
}
-Bool_t Posix_SysDB_getpwnam(NullString8_t p) {
+C_Errno_t(C_Int_t) Posix_SysDB_getpwnam(NullString8_t p) {
return NULL != (passwd = getpwnam((const char *) p));
}
-Bool_t Posix_SysDB_getpwuid(C_UId_t u) {
+C_Errno_t(C_Int_t) Posix_SysDB_getpwuid(C_UId_t u) {
return NULL != (passwd = getpwuid(u));
}
Modified: mlton/branches/on-20050822-x86_64-branch/runtime/basis/System/OS/IO/poll.c
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/runtime/basis/System/OS/IO/poll.c 2006-11-03 11:24:54 UTC (rev 4802)
+++ mlton/branches/on-20050822-x86_64-branch/runtime/basis/System/OS/IO/poll.c 2006-11-03 22:47:30 UTC (rev 4803)
@@ -11,8 +11,8 @@
struct pollfd ufds[n];
for (i = 0; i < n; i++) {
- ufds[i].fd = ((nfds_t*)fds)[i];
- ufds[i].events = ((short*)eventss)[i];
+ ufds[i].fd = ((const int*)fds)[i];
+ ufds[i].events = ((const short*)eventss)[i];
}
res = poll (ufds, n, timeout);
for (i = 0; i < n; i++) {
Modified: mlton/branches/on-20050822-x86_64-branch/runtime/gen/basis-ffi.def
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/runtime/gen/basis-ffi.def 2006-11-03 11:24:54 UTC (rev 4802)
+++ mlton/branches/on-20050822-x86_64-branch/runtime/gen/basis-ffi.def 2006-11-03 22:47:30 UTC (rev 4803)
@@ -108,8 +108,8 @@
Net.ntohl = _import : Word32.t -> Word32.t
Net.ntohs = _import : Word16.t -> Word16.t
NetHostDB.INADDR_ANY = _const : C_Int.t
-NetHostDB.getByAddress = _import : Word8.t vector * C_Socklen.t -> Bool.t
-NetHostDB.getByName = _import : NullString8.t -> Bool.t
+NetHostDB.getByAddress = _import : Word8.t vector * C_Socklen.t -> C_Int.t
+NetHostDB.getByName = _import : NullString8.t -> C_Int.t
NetHostDB.getEntryAddrType = _import : unit -> C_Int.t
NetHostDB.getEntryAddrsN = _import : C_Int.t * Word8.t array -> unit
NetHostDB.getEntryAddrsNum = _import : unit -> C_Int.t
@@ -119,16 +119,16 @@
NetHostDB.getEntryName = _import : unit -> C_String.t
NetHostDB.getHostName = _import : Char8.t array * C_Size.t -> C_Int.t C_Errno.t
NetHostDB.inAddrSize = _const : C_Size.t
-NetProtDB.getByName = _import : NullString8.t -> Bool.t
-NetProtDB.getByNumber = _import : C_Int.t -> Bool.t
+NetProtDB.getByName = _import : NullString8.t -> C_Int.t
+NetProtDB.getByNumber = _import : C_Int.t -> C_Int.t
NetProtDB.getEntryAliasesN = _import : C_Int.t -> C_String.t
NetProtDB.getEntryAliasesNum = _import : unit -> C_Int.t
NetProtDB.getEntryName = _import : unit -> C_String.t
NetProtDB.getEntryProto = _import : unit -> C_Int.t
-NetServDB.getByName = _import : NullString8.t * NullString8.t -> Bool.t
-NetServDB.getByNameNull = _import : NullString8.t -> Bool.t
-NetServDB.getByPort = _import : C_Int.t * NullString8.t -> Bool.t
-NetServDB.getByPortNull = _import : C_Int.t -> Bool.t
+NetServDB.getByName = _import : NullString8.t * NullString8.t -> C_Int.t
+NetServDB.getByNameNull = _import : NullString8.t -> C_Int.t
+NetServDB.getByPort = _import : C_Int.t * NullString8.t -> C_Int.t
+NetServDB.getByPortNull = _import : C_Int.t -> C_Int.t
NetServDB.getEntryAliasesN = _import : C_Int.t -> C_String.t
NetServDB.getEntryAliasesNum = _import : unit -> C_Int.t
NetServDB.getEntryName = _import : unit -> C_String.t
@@ -321,13 +321,13 @@
Posix.FileSys.S.IXGRP = _const : C_Mode.t
Posix.FileSys.S.IXOTH = _const : C_Mode.t
Posix.FileSys.S.IXUSR = _const : C_Mode.t
-Posix.FileSys.ST.isBlk = _import : C_Mode.t -> Bool.t
-Posix.FileSys.ST.isChr = _import : C_Mode.t -> Bool.t
-Posix.FileSys.ST.isDir = _import : C_Mode.t -> Bool.t
-Posix.FileSys.ST.isFIFO = _import : C_Mode.t -> Bool.t
-Posix.FileSys.ST.isLink = _import : C_Mode.t -> Bool.t
-Posix.FileSys.ST.isReg = _import : C_Mode.t -> Bool.t
-Posix.FileSys.ST.isSock = _import : C_Mode.t -> Bool.t
+Posix.FileSys.ST.isBlk = _import : C_Mode.t -> C_Int.t
+Posix.FileSys.ST.isChr = _import : C_Mode.t -> C_Int.t
+Posix.FileSys.ST.isDir = _import : C_Mode.t -> C_Int.t
+Posix.FileSys.ST.isFIFO = _import : C_Mode.t -> C_Int.t
+Posix.FileSys.ST.isLink = _import : C_Mode.t -> C_Int.t
+Posix.FileSys.ST.isReg = _import : C_Mode.t -> C_Int.t
+Posix.FileSys.ST.isSock = _import : C_Mode.t -> C_Int.t
Posix.FileSys.Stat.fstat = _import : C_Fd.t -> C_Int.t C_Errno.t
Posix.FileSys.Stat.getATime = _import : unit -> C_Time.t
# Posix.FileSys.Stat.getBlkCnt = _import : unit -> C_BlkCnt.t
@@ -563,7 +563,7 @@
Posix.ProcEnv.getpid = _import : unit -> C_PId.t
Posix.ProcEnv.getppid = _import : unit -> C_PId.t
Posix.ProcEnv.getuid = _import : unit -> C_UId.t
-Posix.ProcEnv.isatty = _import : C_Fd.t -> Bool.t
+Posix.ProcEnv.isatty = _import : C_Fd.t -> C_Int.t
Posix.ProcEnv.setenv = _import : NullString8.t * NullString8.t -> C_Int.t C_Errno.t
Posix.ProcEnv.setgid = _import : C_GId.t -> C_Int.t C_Errno.t
Posix.ProcEnv.setgroups = _import : C_Int.t * C_GId.t vector -> C_Int.t C_Errno.t
@@ -583,9 +583,9 @@
Posix.Process.exit = _import __attribute__((noreturn)) : C_Status.t -> unit
Posix.Process.exitStatus = _import : C_Status.t -> C_Int.t
Posix.Process.fork = _import : unit -> C_PId.t C_Errno.t
-Posix.Process.ifExited = _import : C_Status.t -> Bool.t
-Posix.Process.ifSignaled = _import : C_Status.t -> Bool.t
-Posix.Process.ifStopped = _import : C_Status.t -> Bool.t
+Posix.Process.ifExited = _import : C_Status.t -> C_Int.t
+Posix.Process.ifSignaled = _import : C_Status.t -> C_Int.t
+Posix.Process.ifStopped = _import : C_Status.t -> C_Int.t
Posix.Process.kill = _import : C_PId.t * C_Signal.t -> C_Int.t C_Errno.t
Posix.Process.nanosleep = _import : C_Time.t ref * C_Long.t ref -> C_Int.t C_Errno.t
Posix.Process.pause = _import : unit -> C_Int.t C_Errno.t
@@ -630,10 +630,10 @@
Posix.Signal.handleGC = _import : unit -> unit
Posix.Signal.handlee = _import : C_Signal.t -> C_Int.t C_Errno.t
Posix.Signal.ignore = _import : C_Signal.t -> C_Int.t C_Errno.t
-Posix.Signal.isDefault = _import : C_Signal.t * Bool.t ref -> C_Int.t C_Errno.t
-Posix.Signal.isIgnore = _import : C_Signal.t * Bool.t ref -> C_Int.t C_Errno.t
-Posix.Signal.isPending = _import : C_Signal.t -> Bool.t
-Posix.Signal.isPendingGC = _import : unit -> Bool.t
+Posix.Signal.isDefault = _import : C_Signal.t * C_Int.t ref -> C_Int.t C_Errno.t
+Posix.Signal.isIgnore = _import : C_Signal.t * C_Int.t ref -> C_Int.t C_Errno.t
+Posix.Signal.isPending = _import : C_Signal.t -> C_Int.t
+Posix.Signal.isPendingGC = _import : unit -> C_Int.t
Posix.Signal.resetPending = _import :unit -> unit
Posix.Signal.sigaddset = _import : C_Signal.t -> C_Int.t C_Errno.t
Posix.Signal.sigdelset = _import : C_Signal.t -> C_Int.t C_Errno.t
@@ -650,10 +650,10 @@
Posix.SysDB.Passwd.getName = _import : unit -> C_String.t
Posix.SysDB.Passwd.getShell = _import : unit -> C_String.t
Posix.SysDB.Passwd.getUId = _import : unit -> C_UId.t
-Posix.SysDB.getgrgid = _import : C_GId.t -> Bool.t
-Posix.SysDB.getgrnam = _import : NullString8.t -> Bool.t
-Posix.SysDB.getpwnam = _import : NullString8.t -> Bool.t
-Posix.SysDB.getpwuid = _import : C_GId.t -> Bool.t
+Posix.SysDB.getgrgid = _import : C_GId.t -> C_Int.t C_Errno.t
+Posix.SysDB.getgrnam = _import : NullString8.t -> C_Int.t C_Errno.t
+Posix.SysDB.getpwnam = _import : NullString8.t -> C_Int.t C_Errno.t
+Posix.SysDB.getpwuid = _import : C_GId.t -> C_Int.t C_Errno.t
Posix.TTY.B0 = _const : C_Speed.t
Posix.TTY.B110 = _const : C_Speed.t
Posix.TTY.B1200 = _const : C_Speed.t
Modified: mlton/branches/on-20050822-x86_64-branch/runtime/gen/gen-types.c
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/runtime/gen/gen-types.c 2006-11-03 11:24:54 UTC (rev 4802)
+++ mlton/branches/on-20050822-x86_64-branch/runtime/gen/gen-types.c 2006-11-03 22:47:30 UTC (rev 4803)
@@ -63,15 +63,15 @@
static const char* mlTypesHStd[] = {
"/* ML types */",
- // "typedef void* Pointer;",
- // "typedef uintptr_t Pointer;",
- // "typedef unsigned char* Pointer;",
- // "struct PointerAux { unsigned char z[4]; } __attribute__ ((aligned (4), may_alias));",
+ "// typedef void* Pointer;",
+ "// typedef uintptr_t Pointer;",
+ "// typedef unsigned char* Pointer;",
+ "// struct PointerAux { unsigned char z[4]; } __attribute__ ((aligned (4), may_alias));",
"typedef unsigned char PointerAux __attribute__ ((aligned (4), may_alias));",
"typedef PointerAux* Pointer;",
"#define Array(t) Pointer",
"#define Ref(t) Pointer",
- "#define Vector(t) const Pointer",
+ "#define Vector(t) Pointer",
"",
"typedef int8_t Int8_t;",
"typedef int8_t Int8;",
@@ -147,6 +147,33 @@
NULL
};
+#define booltype(t, bt, name) \
+ do { \
+ writeString (cTypesHFd, "typedef "); \
+ writeString (cTypesHFd, #t); \
+ writeString (cTypesHFd, " /* "); \
+ writeString (cTypesHFd, bt); \
+ writeUintmaxU (cTypesHFd, CHAR_BIT * sizeof(t)); \
+ writeString (cTypesHFd, "_t"); \
+ writeString (cTypesHFd, " */ "); \
+ writeString (cTypesHFd, "C_"); \
+ writeString (cTypesHFd, name); \
+ writeString (cTypesHFd, "_t;"); \
+ writeNewline (cTypesHFd); \
+ writeString (cTypesSMLFd, "structure C_"); \
+ writeString (cTypesSMLFd, name); \
+ writeString (cTypesSMLFd, " = WordToBool ("); \
+ writeString (cTypesSMLFd, "type t = "); \
+ writeString (cTypesSMLFd, "Word"); \
+ writeUintmaxU (cTypesSMLFd, CHAR_BIT * sizeof(t));\
+ writeString (cTypesSMLFd, ".word"); \
+ writeString (cTypesSMLFd, " "); \
+ writeString (cTypesSMLFd, "val zero: t = 0wx0"); \
+ writeString (cTypesSMLFd, " "); \
+ writeString (cTypesSMLFd, "val one: t = 0wx1"); \
+ writeString (cTypesSMLFd, ")"); \
+ writeNewline (cTypesSMLFd); \
+ } while (0)
#define systype(t, bt, name) \
do { \
char *btLower = strdup(bt); \
@@ -156,12 +183,12 @@
for (size_t i = 0; i < strlen(btUpper); i++) \
btUpper[i] = (char)(toupper((int)(bt[i]))); \
writeString (cTypesHFd, "typedef "); \
- writeString (cTypesHFd, "/* "); \
writeString (cTypesHFd, #t); \
- writeString (cTypesHFd, " */ "); \
+ writeString (cTypesHFd, " /* "); \
writeString (cTypesHFd, bt); \
writeUintmaxU (cTypesHFd, CHAR_BIT * sizeof(t)); \
- writeString (cTypesHFd, "_t "); \
+ writeString (cTypesHFd, "_t"); \
+ writeString (cTypesHFd, " */ "); \
writeString (cTypesHFd, "C_"); \
writeString (cTypesHFd, name); \
writeString (cTypesHFd, "_t;"); \
@@ -203,10 +230,10 @@
#define ptrtype(t, name) \
do { \
writeString (cTypesHFd, "typedef "); \
- writeString (cTypesHFd, "/* "); \
writeString (cTypesHFd, #t); \
+ writeString (cTypesHFd, " /* "); \
+ writeString (cTypesHFd, "Pointer"); \
writeString (cTypesHFd, " */ "); \
- writeString (cTypesHFd, "Pointer "); \
writeString (cTypesHFd, "C_"); \
writeString (cTypesHFd, name); \
writeString (cTypesHFd, "_t;"); \
@@ -298,6 +325,7 @@
writeNewline (cTypesHFd);writeNewline (cTypesSMLFd);
writeStringWithNewline (cTypesHFd, "/* C */");
writeStringWithNewline (cTypesSMLFd, "(* C *)");
+ booltype(_Bool, "Word", "Bool");
chksystype(char, "Char");
chksystype(signed char, "SChar");
chksystype(unsigned char, "UChar");
|
|
From: Vesa K. <ve...@ml...> - 2006-11-03 03:25:04
|
Added call.
----------------------------------------------------------------------
U mltonlib/trunk/com/ssh/basic/unstable/detail/exit.sml
U mltonlib/trunk/com/ssh/basic/unstable/public/exit.sig
----------------------------------------------------------------------
Modified: mltonlib/trunk/com/ssh/basic/unstable/detail/exit.sml
===================================================================
--- mltonlib/trunk/com/ssh/basic/unstable/detail/exit.sml 2006-11-03 09:57:28 UTC (rev 4801)
+++ mltonlib/trunk/com/ssh/basic/unstable/detail/exit.sml 2006-11-03 11:24:54 UTC (rev 4802)
@@ -15,4 +15,6 @@
end
fun to exit value = raise exit value
+
+ fun call block = within (block o to)
end
Modified: mltonlib/trunk/com/ssh/basic/unstable/public/exit.sig
===================================================================
--- mltonlib/trunk/com/ssh/basic/unstable/public/exit.sig 2006-11-03 09:57:28 UTC (rev 4801)
+++ mltonlib/trunk/com/ssh/basic/unstable/public/exit.sig 2006-11-03 11:24:54 UTC (rev 4802)
@@ -47,4 +47,10 @@
* This means that {to} doesn't return normally to the caller and can
* be called from a context of any type.
*)
+
+ val call : (('a -> 'b) -> 'a) -> 'a
+ (**
+ * Simpler, but less flexibly typed, interface to {within} and {to}.
+ * Specifically, {call f} is equivalent to {within (f o to)}.
+ *)
end
|
|
From: Vesa K. <ve...@ml...> - 2006-11-03 01:57:42
|
Documentation.
----------------------------------------------------------------------
U mltonlib/trunk/com/ssh/basic/unstable/public/exit.sig
----------------------------------------------------------------------
Modified: mltonlib/trunk/com/ssh/basic/unstable/public/exit.sig
===================================================================
--- mltonlib/trunk/com/ssh/basic/unstable/public/exit.sig 2006-11-02 16:22:47 UTC (rev 4800)
+++ mltonlib/trunk/com/ssh/basic/unstable/public/exit.sig 2006-11-03 09:57:28 UTC (rev 4801)
@@ -7,10 +7,11 @@
(**
* Signature for exit (or escape) handlers.
*
- * Note the type of the {to} function. The return type of {to} is a type
- * variable that only appears as the return type. This means that the
- * {to} function doesn't return normally to the caller and that you can
- * call it from a context of any type.
+ * Note that the implementation necessarily uses exception handling. This
+ * is to make proper resource handling possible. Exceptions raised by the
+ * implementation can be caught by wildcard exception handlers. Wildcard
+ * exception handlers should generally reraise exceptions after performing
+ * their effects.
*)
signature EXIT = sig
type 'a t
@@ -19,8 +20,8 @@
val within : ('a t -> 'a) -> 'a
(**
* Sets up an exit and passes it to the given function. The function
- * may then either return normally or by calling {to} with the exit and
- * a return value. For example,
+ * may then return normally or by calling {to} with the exit and a
+ * return value. For example,
*
*> Exit.within
*> (fn l =>
@@ -38,13 +39,12 @@
val to : 'a t -> 'a -> 'b
(**
* {to l v} returns from the {within} invocation that introduced the
- * exit {l} with the value {v}.
+ * exit {l} with the value {v}. Evaluating {to l v} outside of the
+ * {within} invocation that introduced {l} is a programming error and
+ * raises an exception.
*
- * Note that {to} works by raising an exception. The exception can be
- * caught by a wildcard exception handler. Wildcard exception handlers
- * should usually reraise the exception after performing their effects.
- * Also, if the {within} invocation that introduced the exit {l} has
- * already returned, the effect is (still) that an exception will be
- * raised.
+ * Note that the type variable {'b} only appears as the return type.
+ * This means that {to} doesn't return normally to the caller and can
+ * be called from a context of any type.
*)
end
|
|
From: Matthew F. <fl...@ml...> - 2006-11-02 08:22:51
|
set-cookie header mistakenly translated to Server variant
----------------------------------------------------------------------
U mlton/trunk/lib/mlton/basic/http.sml
----------------------------------------------------------------------
Modified: mlton/trunk/lib/mlton/basic/http.sml
===================================================================
--- mlton/trunk/lib/mlton/basic/http.sml 2006-11-01 12:30:33 UTC (rev 4799)
+++ mlton/trunk/lib/mlton/basic/http.sml 2006-11-02 16:22:47 UTC (rev 4800)
@@ -355,7 +355,7 @@
("referer", SOME o Referer),
("retry-after", SOME o RetryAfter),
("server", SOME o Server),
- ("set-cookie", SOME o Server),
+ ("set-cookie", SOME o SetCookie),
("trailer", SOME o Trailer),
("transfer-encoding", SOME o TransferEncoding),
("upgrade", SOME o Upgrade),
|
|
From: Vesa K. <ve...@ml...> - 2006-11-01 04:30:37
|
Started "exporting" basic utilities.
----------------------------------------------------------------------
A mltonlib/trunk/com/ssh/basic/
A mltonlib/trunk/com/ssh/basic/unstable/
A mltonlib/trunk/com/ssh/basic/unstable/basic.mlb
A mltonlib/trunk/com/ssh/basic/unstable/detail/
A mltonlib/trunk/com/ssh/basic/unstable/detail/exit.sml
A mltonlib/trunk/com/ssh/basic/unstable/public/
A mltonlib/trunk/com/ssh/basic/unstable/public/exit.sig
A mltonlib/trunk/com/ssh/basic/unstable/public/export.sml
A mltonlib/trunk/com/ssh/basic/unstable/readme.txt
----------------------------------------------------------------------
Added: mltonlib/trunk/com/ssh/basic/unstable/basic.mlb
===================================================================
--- mltonlib/trunk/com/ssh/basic/unstable/basic.mlb 2006-10-31 14:45:16 UTC (rev 4798)
+++ mltonlib/trunk/com/ssh/basic/unstable/basic.mlb 2006-11-01 12:30:33 UTC (rev 4799)
@@ -0,0 +1,22 @@
+(* Copyright (C) 2006 SSH Communications Security, Helsinki, Finland
+ *
+ * MLton is released under a BSD-style license.
+ * See the file MLton-LICENSE for details.
+ *)
+
+local
+ $(MLTON_LIB)/com/ssh/extended-basis/unstable/basis.mlb
+in
+ ann
+ "forceUsed"
+ "sequenceNonUnit warn"
+ "warnUnused true"
+ in
+ local
+ public/exit.sig
+ detail/exit.sml
+ in
+ public/export.sml
+ end
+ end
+end
Property changes on: mltonlib/trunk/com/ssh/basic/unstable/basic.mlb
___________________________________________________________________
Name: svn:eol-style
+ native
Added: mltonlib/trunk/com/ssh/basic/unstable/detail/exit.sml
===================================================================
--- mltonlib/trunk/com/ssh/basic/unstable/detail/exit.sml 2006-10-31 14:45:16 UTC (rev 4798)
+++ mltonlib/trunk/com/ssh/basic/unstable/detail/exit.sml 2006-11-01 12:30:33 UTC (rev 4799)
@@ -0,0 +1,18 @@
+(* Copyright (C) 2006 SSH Communications Security, Helsinki, Finland
+ *
+ * MLton is released under a BSD-style license.
+ * See the file MLton-LICENSE for details.
+ *)
+
+structure Exit :> EXIT = struct
+ type 'a t = 'a -> exn
+
+ fun within block = let
+ exception EscapedExit of 'a
+ in
+ block EscapedExit
+ handle EscapedExit value => value
+ end
+
+ fun to exit value = raise exit value
+end
Property changes on: mltonlib/trunk/com/ssh/basic/unstable/detail/exit.sml
___________________________________________________________________
Name: svn:eol-style
+ native
Added: mltonlib/trunk/com/ssh/basic/unstable/public/exit.sig
===================================================================
--- mltonlib/trunk/com/ssh/basic/unstable/public/exit.sig 2006-10-31 14:45:16 UTC (rev 4798)
+++ mltonlib/trunk/com/ssh/basic/unstable/public/exit.sig 2006-11-01 12:30:33 UTC (rev 4799)
@@ -0,0 +1,50 @@
+(* Copyright (C) 2006 SSH Communications Security, Helsinki, Finland
+ *
+ * MLton is released under a BSD-style license.
+ * See the file MLton-LICENSE for details.
+ *)
+
+(**
+ * Signature for exit (or escape) handlers.
+ *
+ * Note the type of the {to} function. The return type of {to} is a type
+ * variable that only appears as the return type. This means that the
+ * {to} function doesn't return normally to the caller and that you can
+ * call it from a context of any type.
+ *)
+signature EXIT = sig
+ type 'a t
+ (** The type of exits. *)
+
+ val within : ('a t -> 'a) -> 'a
+ (**
+ * Sets up an exit and passes it to the given function. The function
+ * may then either return normally or by calling {to} with the exit and
+ * a return value. For example,
+ *
+ *> Exit.within
+ *> (fn l =>
+ *> if condition then
+ *> Exit.to l 1
+ *> else
+ *> 2)
+ *
+ * evaluates either to {1} or to {2} depending on the {condition}.
+ *
+ * Note that the function receiving the exit is called from a non-tail
+ * position.
+ *)
+
+ val to : 'a t -> 'a -> 'b
+ (**
+ * {to l v} returns from the {within} invocation that introduced the
+ * exit {l} with the value {v}.
+ *
+ * Note that {to} works by raising an exception. The exception can be
+ * caught by a wildcard exception handler. Wildcard exception handlers
+ * should usually reraise the exception after performing their effects.
+ * Also, if the {within} invocation that introduced the exit {l} has
+ * already returned, the effect is (still) that an exception will be
+ * raised.
+ *)
+end
Property changes on: mltonlib/trunk/com/ssh/basic/unstable/public/exit.sig
___________________________________________________________________
Name: svn:eol-style
+ native
Added: mltonlib/trunk/com/ssh/basic/unstable/public/export.sml
===================================================================
--- mltonlib/trunk/com/ssh/basic/unstable/public/export.sml 2006-10-31 14:45:16 UTC (rev 4798)
+++ mltonlib/trunk/com/ssh/basic/unstable/public/export.sml 2006-11-01 12:30:33 UTC (rev 4799)
@@ -0,0 +1,7 @@
+(* Copyright (C) 2006 SSH Communications Security, Helsinki, Finland
+ *
+ * MLton is released under a BSD-style license.
+ * See the file MLton-LICENSE for details.
+ *)
+
+structure Exit :> EXIT = Exit
Property changes on: mltonlib/trunk/com/ssh/basic/unstable/public/export.sml
___________________________________________________________________
Name: svn:eol-style
+ native
Added: mltonlib/trunk/com/ssh/basic/unstable/readme.txt
===================================================================
--- mltonlib/trunk/com/ssh/basic/unstable/readme.txt 2006-10-31 14:45:16 UTC (rev 4798)
+++ mltonlib/trunk/com/ssh/basic/unstable/readme.txt 2006-11-01 12:30:33 UTC (rev 4799)
@@ -0,0 +1,56 @@
+Basic Utilities Library
+-----------------------
+
+ This library implements basic utilities for SML programming that one
+ could reasonably consider to be a part of the language.
+
+
+Info
+----
+
+ License: MLton-LICENSE
+ Portability: portable
+ Stability: experimental
+ Maintainer: Vesa Karvonen <ves...@cs...>
+
+
+About Library Organization
+--------------------------
+
+ public/
+
+ This directory contains the documented signature definitions (*.sig)
+ and listings of all top-level bindings exported by this library
+ (export.sml). The contents of this directory should be sufficient
+ to understand what is provided by this library.
+
+ basic.{cm,mlb,use}
+
+ These build files define the library. See the build files for
+ further instructions.
+
+ detail/
+
+ This directory contains the implementation details of the library.
+
+
+Contributions
+-------------
+
+ The signatures and structures defined by this library are not meant to
+ be cast in stone! We welcome contributions including new utilities,
+ bugfixes, and ports to new compilers. The recommended submit method
+ for small contributions to this library is to send a message with a
+ brief description of the proposed contribution as well as a patch
+ containing full code and documentation (signature comments) to either
+ the MLton-user list
+
+ mlt...@ml...
+
+ or the MLton list
+
+ ml...@ml... .
+
+ For larger extensions or changes we recommend that you first contact
+ the active maintainer(s) of this library. The preferred contact method
+ is through the above mailing lists.
Property changes on: mltonlib/trunk/com/ssh/basic/unstable/readme.txt
___________________________________________________________________
Name: svn:eol-style
+ native
|
|
From: Matthew F. <fl...@ml...> - 2006-10-31 06:45:19
|
Fixed a packaging bug that was leaving .cm files around in mlyacc-lib. This could happen if SML/NJ was used to build mlton. ---------------------------------------------------------------------- U mlton/trunk/Makefile ---------------------------------------------------------------------- Modified: mlton/trunk/Makefile =================================================================== --- mlton/trunk/Makefile 2006-10-30 22:20:10 UTC (rev 4797) +++ mlton/trunk/Makefile 2006-10-31 14:45:16 UTC (rev 4798) @@ -184,6 +184,7 @@ true || $(CP) $(SRC)/lib/mlrisc-lib/MLRISC/. $(LIB)/sml/mlrisc-lib $(CP) $(SRC)/lib/mlyacc/. $(LIB)/sml/mlyacc-lib $(CP) $(SRC)/lib/smlnj-lib/smlnj-lib/. $(LIB)/sml/smlnj-lib + find $(LIB)/sml -type d -name .cm | xargs rm -rf find $(LIB)/sml -type d -name .svn | xargs rm -rf find $(LIB)/sml -type f -name .ignore | xargs rm -rf |
|
From: Stephen W. <sw...@ml...> - 2006-10-30 14:20:30
|
Added Javascript manipulation tool. ---------------------------------------------------------------------- A mltonlib/trunk/com/entain/ A mltonlib/trunk/com/entain/javascript/ A mltonlib/trunk/com/entain/javascript/unstable/ A mltonlib/trunk/com/entain/javascript/unstable/LICENSE A mltonlib/trunk/com/entain/javascript/unstable/Makefile A mltonlib/trunk/com/entain/javascript/unstable/README A mltonlib/trunk/com/entain/javascript/unstable/control.fun A mltonlib/trunk/com/entain/javascript/unstable/control.sig A mltonlib/trunk/com/entain/javascript/unstable/javascript.fun A mltonlib/trunk/com/entain/javascript/unstable/javascript.grm A mltonlib/trunk/com/entain/javascript/unstable/javascript.lex A mltonlib/trunk/com/entain/javascript/unstable/javascript.mlb A mltonlib/trunk/com/entain/javascript/unstable/javascript.sig A mltonlib/trunk/com/entain/javascript/unstable/javascript.sml A mltonlib/trunk/com/entain/javascript/unstable/join-lattice.fun A mltonlib/trunk/com/entain/javascript/unstable/join-lattice.sig A mltonlib/trunk/com/entain/javascript/unstable/lex-internals.sig A mltonlib/trunk/com/entain/javascript/unstable/lex.fun A mltonlib/trunk/com/entain/javascript/unstable/lex.sig A mltonlib/trunk/com/entain/javascript/unstable/lib.mlb A mltonlib/trunk/com/entain/javascript/unstable/main.sig A mltonlib/trunk/com/entain/javascript/unstable/main.sml A mltonlib/trunk/com/entain/javascript/unstable/mjs.mlb A mltonlib/trunk/com/entain/javascript/unstable/mlb-path-map A mltonlib/trunk/com/entain/javascript/unstable/parse.fun A mltonlib/trunk/com/entain/javascript/unstable/parse.sig A mltonlib/trunk/com/entain/javascript/unstable/regexp.fun A mltonlib/trunk/com/entain/javascript/unstable/regexp.sig A mltonlib/trunk/com/entain/javascript/unstable/region.fun A mltonlib/trunk/com/entain/javascript/unstable/region.sig A mltonlib/trunk/com/entain/javascript/unstable/source-pos.fun A mltonlib/trunk/com/entain/javascript/unstable/source-pos.sig A mltonlib/trunk/com/entain/javascript/unstable/source.fun A mltonlib/trunk/com/entain/javascript/unstable/source.sig A mltonlib/trunk/com/entain/javascript/unstable/stream.sig A mltonlib/trunk/com/entain/javascript/unstable/stream.sml A mltonlib/trunk/com/entain/javascript/unstable/token.fun A mltonlib/trunk/com/entain/javascript/unstable/token.sig A mltonlib/trunk/com/entain/javascript/unstable/top-down-parser.fun A mltonlib/trunk/com/entain/javascript/unstable/top-down-parser.mlb A mltonlib/trunk/com/entain/javascript/unstable/top-down-parser.sig A mltonlib/trunk/com/entain/javascript/unstable/top-down-parser.sml A mltonlib/trunk/com/entain/javascript/unstable/two-point-lattice.fun A mltonlib/trunk/com/entain/javascript/unstable/two-point-lattice.sig A mltonlib/trunk/com/entain/javascript/unstable/util.sml ---------------------------------------------------------------------- Property changes on: mltonlib/trunk/com/entain/javascript/unstable ___________________________________________________________________ Name: svn:ignore + mjs lex-internals.fun Added: mltonlib/trunk/com/entain/javascript/unstable/LICENSE =================================================================== --- mltonlib/trunk/com/entain/javascript/unstable/LICENSE 2006-10-29 18:53:30 UTC (rev 4796) +++ mltonlib/trunk/com/entain/javascript/unstable/LICENSE 2006-10-30 22:20:10 UTC (rev 4797) @@ -0,0 +1,20 @@ +COPYRIGHT NOTICE, LICENSE AND DISCLAIMER. + +Copyright (C) 2006 Entain, Inc. + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both the copyright notice and this permission notice and warranty +disclaimer appear in supporting documentation, and that the name of +the above copyright holders, or their entities, not be used in +advertising or publicity pertaining to distribution of the software +without specific, written prior permission. + +The above copyright holders disclaim all warranties with regard to +this software, including all implied warranties of merchantability and +fitness. In no event shall the above copyright holders be liable for +any special, indirect or consequential damages or any damages +whatsoever resulting from loss of use, data or profits, whether in an +action of contract, negligence or other tortious action, arising out +of or in connection with the use or performance of this software. Added: mltonlib/trunk/com/entain/javascript/unstable/Makefile =================================================================== --- mltonlib/trunk/com/entain/javascript/unstable/Makefile 2006-10-29 18:53:30 UTC (rev 4796) +++ mltonlib/trunk/com/entain/javascript/unstable/Makefile 2006-10-30 22:20:10 UTC (rev 4797) @@ -0,0 +1,30 @@ +# Copyright (C) 2006 Entain, Inc. +# +# This code is released under the MLton license, a BSD-style license. +# See the LICENSE file or http://mlton.org/License for details. +# + +NAME = mjs +MLTON = mlton -mlb-path-map mlb-path-map +FLAGS = \ + -const 'Exn.keepHistory true' \ + -verbose 1 +LEXER = lex-internals.fun +EXE=$(NAME) + +.PHONY: all +all: $(EXE) + +$(EXE): $(shell $(MLTON) -stop f $(NAME).mlb) + time $(MLTON) $(FLAGS) -output $(EXE) $(NAME).mlb + +$(LEXER): javascript.lex + rm -f $(LEXER) + mllex javascript.lex + mv javascript.lex.sml $(LEXER) + chmod -w $(LEXER) + +javascript.grm.sig javascript.grm.sml: javascript.grm + rm -f javascript.grm.* + mlyacc javascript.grm + chmod -w javascript.grm.* Added: mltonlib/trunk/com/entain/javascript/unstable/README =================================================================== --- mltonlib/trunk/com/entain/javascript/unstable/README 2006-10-29 18:53:30 UTC (rev 4796) +++ mltonlib/trunk/com/entain/javascript/unstable/README 2006-10-30 22:20:10 UTC (rev 4797) @@ -0,0 +1,107 @@ +This directory contains SML code for tools (compressor, lexer, parser, +pretty-printer) to manipulate Javascript, as specified by: + + ECMAScript Language Specification + Edition 3 Final + 24 March 2000 + +This directory includes: + + * An ML-Lex specification for Javascript tokens. + * An ML-Yacc specification for Javascript. + * A hand-crafted top-down-parser generator. + * A specification of Javascript's grammar that works with the + top-down-parser generator. + * Datatypes for Javascript tokens and abstract syntax trees. + * A command-line tool for Javascript compression, tokenization, + parsing, and pretty printing. + +The ML-Yacc parser works except that it doesn't handle semicolon +insertion. It is not used. Instead, the top-down parser is used. + +The code is available under the MLton license. See the LICENSE file +or http://mlton.org/License . + +---------------------------------------- +Command-line tool +---------------------------------------- + +The command-line tool compresses, parses, or tokenizes a Javascript +file. The usage is + + mjs {compress|parse|tokenize} <file> + +where <file> is a file containing Javascript code. + +(The mnemonic for "mjs" is "Manipulate JavaScript") + +---------------------------------------- +Building the tool +---------------------------------------- + +This code compiles with MLton and uses the MLton library that lives in +the MLton SVN. + + svn://mlton.org/mlton/trunk/lib/mlton + +To compile, you must set the MLB Path variable "MLTON_LIB" to point +at a local copy of that directory. This code works with the MLton +library as of 2006-10-30. To set MLTON_LIB, edit the mlb-path-map +file. Once you've set that correctly, you should be able to type +"make" and watch MLton build the "mjs" executable. + +---------------------------------------- +Files in this directory. +---------------------------------------- + +control.{fun,sig} + Switches to control behavior. +javascript.grm + ML-Yacc specification for Javascript. +javascript.lex + ML-Lex specification for Javascript. +javascript.{mlb} + MLB library file for Javasscript +javascript.{fun,sig} + Abstract syntax trees for Javascript. +javascript.sml + Apply functors to build the syntax trees and parser. +join-lattice.{fun,sig} + A simple lattce constraint solver. +lex.{fun,sig} + Wrapper around the ML-Lex generated lexer. +lex-internals.sig + Specifies the routines needed within the ML-Lex specification. +lib.mlb + MLB library file to import the MLton library. +LICENSE + The MLton license, under which this code is released. +main.{sig,sml} + The command-line tool. +Makefile + Build lexer, parser, and command-line tool. +mjs.mlb + Build file for the command-line tool. +parse.{fun,sig} + A top-down parser for Javascript, implementing using the top-down + parser generator. +README + This file. +regexp.{fun,sig} + Syntax for Javascript regexps +region.{fun,sig} + Regions of source code (taken from MLton). +source.{fun,sig} + Source files (taken from MLton). +source-pos.{fun,sig}. + Source code positions (taken from MLton). +stream.{sig,sml} + Polymorphic sequence type. +token.{fun,sig} + Javascript tokens. +top-down-parser.{fun,mlb,sig,sml} + A top-down-parser generator. +two-point-lattice.{fun,sig} + A simple lattice constraint solver. +util.sml + A couple of string utilities. Added: mltonlib/trunk/com/entain/javascript/unstable/control.fun =================================================================== --- mltonlib/trunk/com/entain/javascript/unstable/control.fun 2006-10-29 18:53:30 UTC (rev 4796) +++ mltonlib/trunk/com/entain/javascript/unstable/control.fun 2006-10-30 22:20:10 UTC (rev 4797) @@ -0,0 +1,65 @@ +(* Copyright (C) 2006 Entain, Inc. + * + * This code is released under the MLton license, a BSD-style license. + * See the LICENSE file or http://mlton.org/License for details. + *) + +functor Control (S: CONTROL_STRUCTS): CONTROL = +struct + +open S + +local + open Region +in + structure SourcePos = SourcePos +end + +val acceptMozillaExtensions = ref false + +val numErrors: int ref = ref 0 + +val errorThreshhold: int ref = ref 20 + +val die = Process.fail + +local + fun msg (kind: string, r: Region.t, msg: Layout.t, extra: Layout.t): unit = + let + open Layout + val p = + case Region.left r of + NONE => "<bogus>" + | SOME p => SourcePos.toString p + val msg = Layout.toString msg + val msg = + Layout.str + (concat [String.fromChar (Char.toUpper (String.sub (msg, 0))), + String.dropPrefix (msg, 1), + "."]) + in + outputl (align [seq [str (concat [kind, ": "]), str p, str "."], + indent (align [msg, + indent (extra, 2)], + 2)], + Out.error) + end +in + fun error (r, m, e) = + let + val _ = Int.inc numErrors + val _ = msg ("Error", r, m, e) + in + if !numErrors = !errorThreshhold + then die "compilation aborted: too many errors" + else () + end +end + +fun errorStr (r, msg) = error (r, Layout.str msg, Layout.empty) + +end + +structure SourcePos = SourcePos () +structure Region = Region (structure SourcePos = SourcePos) +structure Control = Control (structure Region = Region) Added: mltonlib/trunk/com/entain/javascript/unstable/control.sig =================================================================== --- mltonlib/trunk/com/entain/javascript/unstable/control.sig 2006-10-29 18:53:30 UTC (rev 4796) +++ mltonlib/trunk/com/entain/javascript/unstable/control.sig 2006-10-30 22:20:10 UTC (rev 4797) @@ -0,0 +1,18 @@ +(* Copyright (C) 2006 Entain, Inc. + * + * This code is released under the MLton license, a BSD-style license. + * See the LICENSE file or http://mlton.org/License for details. + *) + +signature CONTROL_STRUCTS = + sig + structure Region: REGION + end + +signature CONTROL = + sig + include CONTROL_STRUCTS + + val acceptMozillaExtensions: bool ref + val errorStr: Region.t * string -> unit + end Added: mltonlib/trunk/com/entain/javascript/unstable/javascript.fun =================================================================== --- mltonlib/trunk/com/entain/javascript/unstable/javascript.fun 2006-10-29 18:53:30 UTC (rev 4796) +++ mltonlib/trunk/com/entain/javascript/unstable/javascript.fun 2006-10-30 22:20:10 UTC (rev 4797) @@ -0,0 +1,1178 @@ +(* Copyright (C) 2006 Entain, Inc. + * + * This code is released under the MLton license, a BSD-style license. + * See the LICENSE file or http://mlton.org/License for details. + *) + +functor Javascript (S: JAVASCRIPT_STRUCTS): JAVASCRIPT = +struct + +open S + +structure Pervasive = + struct + structure String = String + end + +structure Id = + struct + datatype t = T of string + + fun equals (T s, T s') = s = s' + + val fromString = T + + fun toString (T s) = s + + val layout = Layout.str o toString + end + +structure AssignOp = + struct + datatype t = + Add + | BitwiseAnd + | BitwiseOr + | BitwiseXor + | Div + | Equals + | LeftShift + | Mul + | Mod + | RightShiftSigned + | RightShiftUnsigned + | Sub + + val toString = + fn Add => "+=" + | BitwiseAnd => "&=" + | BitwiseOr => "|=" + | BitwiseXor => "^=" + | Div => "/=" + | Equals => "=" + | LeftShift => "<<=" + | Mul => "*=" + | Mod => "%=" + | RightShiftSigned => ">>=" + | RightShiftUnsigned => ">>>=" + | Sub => "-=" + + val layout = Layout.str o toString + end + +structure BinaryOp = + struct + datatype t = + Add + | BitwiseAnd + | BitwiseOr + | BitwiseXor + | Div + | Equals + | GreaterThan + | GreaterThanEqual + | In + | InstanceOf + | LeftShift + | LessThan + | LessThanEqual + | LogicalAnd + | LogicalOr + | Mod + | Mul + | NotEquals + | RightShiftSigned + | RightShiftUnsigned + | StrictEquals + | StrictNotEquals + | Sub + + val toString = + fn Add => "+" + | BitwiseAnd => "&" + | BitwiseOr => "|" + | BitwiseXor => "^" + | Div => "/" + | Equals => "==" + | GreaterThan => ">" + | GreaterThanEqual => ">=" + | In => "in" + | InstanceOf => "instanceof" + | LeftShift => "<<" + | LessThan => "<" + | LessThanEqual => "<=" + | LogicalAnd => "&&" + | LogicalOr => "||" + | Mod => "%" + | Mul => "*" + | NotEquals => "!=" + | RightShiftSigned => ">>" + | RightShiftUnsigned => ">>>" + | StrictEquals => "===" + | StrictNotEquals => "!==" + | Sub => "-" + + val layout = Layout.str o toString + + val equals: t * t -> bool = op = + + val precedences: t list list = + [[Div, Mod, Mul], + [Add, Sub], + [LeftShift, RightShiftSigned, RightShiftUnsigned], + [GreaterThan, GreaterThanEqual, LessThan, LessThanEqual, In, + InstanceOf], + [Equals, NotEquals, StrictEquals, StrictNotEquals], + [BitwiseAnd], + [BitwiseXor], + [BitwiseOr], + [LogicalAnd], + [LogicalOr]] + + val precedencesRev = rev precedences + end + +structure UnaryOp = + struct + datatype t = + Add + | BitwiseNot + | Delete + | LogicalNot + | Neg + | PreDecrement + | PreIncrement + | PostDecrement + | PostIncrement + | TypeOf + | Void + + val hasSideEffect = + fn PreDecrement => true + | PreIncrement => true + | PostDecrement => true + | PostIncrement => true + | _ => false + + val isAlphaNumeric = + fn Delete => true + | TypeOf => true + | Void => true + | _ => false + + val isSymbolic = not o isAlphaNumeric + + fun mustSeparate (o1, o2) = + if isAlphaNumeric o1 + then isAlphaNumeric o2 + else + case (o1, o2) of + (Add, Add) => true + | (Add, PreIncrement) => true + | (Neg, Neg) => true + | (Neg, PreDecrement) => true + | _ => false + + val toString = + fn Add => "+" + | BitwiseNot => "~" + | Delete => "delete" + | LogicalNot => "!" + | Neg => "-" + | PreDecrement => "--" + | PreIncrement => "++" + | PostDecrement => "--" + | PostIncrement => "++" + | TypeOf => "typeof" + | Void => "void" + + val layout = Layout.str o toString + + val isPostfix = + fn PostDecrement => true + | PostIncrement => true + | _ => false + + val isPrefix = not o isPostfix + end + +structure Number = + struct + datatype t = T of Real.t + + fun equals (T r, T r') = Real.equals (r, r') + + fun fromReal r = if r < 0.0 then Error.bug "Number.fromReal" else T r + + val toReal = fn T r => r + + val fromInt = fromReal o Int.toReal + + val zero = fromInt 0 + + fun isZero n = equals (n, zero) + + fun toString (T r) = Util.realToJavascript r + + val layout = Layout.str o toString + end + +structure String = + struct + datatype t = T of word vector + + val make = T + + fun fromString s = + T (Vector.tabulate + (String.size s, fn i => + Word.fromInt (Char.toInt (String.sub (s, i))))) + + fun escape (T ws) = Util.escapeJavascript ws + + fun toString (T ws) = + String.tabulate (Vector.length ws, fn i => + Char.fromInt (Word.toInt (Vector.sub (ws, i)))) + + val layout = Layout.str o escape + + val w2c = Char.fromInt o Word.toInt + + val keywords = + ["true", "false", "break", "case", "catch", "const", "continue", + "default", "delete", "do", "else", "finally", "for", "function", + "if", "in", "instanceof", "new", "null", "return", "switch", "this", + "throw", "tilde", "try", "typeof", "var", "void", "while", "with"] + + local + val set = HashSet.new {hash = #hash} + val () = + List.foreach + (keywords, fn s => + let + val hash = String.hash s + in + ignore + (HashSet.lookupOrInsert + (set, hash, fn {string = s', ...} => s = s', + fn () => {hash = hash, string = s})) + end) + in + fun isKeyword s = + isSome + (HashSet.peek (set, String.hash s, fn {string = s', ...} => s = s')) + end + + fun isValidIdentifier (T ws) = + 0 < Vector.length ws + andalso + let + fun isOk c = Char.isAlphaNum c orelse c = #"_" orelse c = #"$" + in + (isOk (w2c (Vector.sub (ws, 0))) + andalso Vector.forall (ws, fn w => + let + val c = w2c w + in + isOk c orelse Char.isDigit c + end) + andalso not (isKeyword (String.tabulate + (Vector.length ws, fn i => + w2c (Vector.sub (ws, i)))))) + handle Chr => false + end + + fun layoutAsPropertyName (s: t): Layout.t = + if isValidIdentifier s + then Layout.str (toString s) + else layout s + end + +structure PropertyName = + struct + datatype t = + Number of Number.t + | String of String.t + + val layout = + fn Number n => Number.layout n + | String s => String.layoutAsPropertyName s + + val fromInt = Number o Number.fromInt + + val fromString = String o String.fromString + end + +structure Joint = + struct + datatype exp = + Array of exp option vector + | Assign of {lhs: exp, + oper: AssignOp.t, + rhs: exp} + | Bool of bool + | Binary of {lhs: exp, + oper: BinaryOp.t, + rhs: exp} + | Call of {args: exp vector, + func: exp} + | Cond of {elsee: exp, + test: exp, + thenn: exp} + | Function of {args: Id.t vector, + body: statement vector, + name: Id.t option} + | Id of Id.t + | New of {args: exp vector, + object: exp} + | Number of Number.t + | Null + | Object of objectInit vector + | Regexp of Regexp.t + | Seq of exp vector + | Select of {object: exp, + property: exp} + | SelectId of {object: exp, + property: Id.t} + | String of String.t + | Unary of {exp: exp, + oper: UnaryOp.t} + | This + + and objectInit = + Get of {args: Id.t vector, + body: statement vector, + name: Id.t} + | Property of {property: PropertyName.t, + value: exp} + | Set of {args: Id.t vector, + body: statement vector, + name: Id.t} + + and statement = + Block of statement vector + | Break of Id.t option + | Const of (Id.t * exp) vector + | Continue of Id.t option + | Do of {body: statement, + test: exp} + | Empty + | Exp of exp + | For of {body: statement, + inc: exp option, + init: exp option, + test: exp option} + | ForIn of {body: statement, + lhs: exp, + object: exp} + | ForVar of {body: statement, + inc: exp option, + init: (Id.t * exp option) vector, + test: exp option} + | ForVarIn of {body: statement, + id: Id.t, + init: exp option, + object: exp} + | FunctionDec of {args: Id.t vector, + body: statement vector, + name: Id.t} + | If of {elsee: statement option, + test: exp, + thenn: statement} + | Labeled of Id.t * statement + | Return of exp option + | Switch of {clauses: (exp option * statement vector) vector, + test: exp} + | Throw of exp + | Try of {body: statement vector, + catch: (Id.t * statement vector) option, + finally: statement vector option} + | Var of (Id.t * exp option) vector + | While of {body: statement, + test: exp} + | With of {body: statement, + object: exp} + end + +structure Exp = + struct + datatype t = datatype Joint.exp + end + +structure Statement = + struct + datatype t = datatype Joint.statement + end + +structure ObjectInit = + struct + datatype dest = datatype Joint.objectInit + datatype t = datatype dest + end + +structure Joint = + struct + open Joint + + local + open Layout + in + fun commaList (v: 'a vector, lay: 'a -> Layout.t): Layout.t = + mayAlign (separateRight (Vector.toListMap (v, lay), ",")) + + fun for (iter, body) = + layoutStatementIn (body, seq [str "for ", paren iter], NONE) + + and layoutArguments es = + paren (commaList (es, layoutAssignmentExp)) + + and layoutAssignmentExp e = + layoutAssignmentExpGen (e, {isStatement = false, + mayHaveIn = true}) + + and layoutAssignmentExpGen (e, {isStatement, mayHaveIn}) = + case e of + Assign {lhs, oper, rhs} => + mayAlign [seq [layoutLeftHandSideExp + (lhs, {isStatement = isStatement}), + str " ", AssignOp.layout oper], + indent (layoutAssignmentExpGen + (rhs, {isStatement = false, + mayHaveIn = mayHaveIn}), + 2)] + | _ => layoutConditionalExp (e, {isStatement = isStatement, + mayHaveIn = mayHaveIn}) + + and layoutBinaryExp (e: Exp.t, {isStatement, mayHaveIn}) : Layout.t = + let + fun loop arg: Layout.t = + Trace.trace3 + ("loop", Layout.ignore, Layout.ignore, + List.layout (List.layout BinaryOp.layout), + fn l => l) + (fn (e: Exp.t, {isStatement}, opers) => + case e of + Binary {lhs, oper, rhs} => + if not mayHaveIn + andalso BinaryOp.equals (oper, BinaryOp.In) + then layoutUnaryExp (e, {isStatement = isStatement}) + else + let + fun loop' opers' = + case opers' of + [] => + layoutUnaryExp + (e, {isStatement = isStatement}) + | z :: opers'' => + if List.exists + (z, fn oper' => + BinaryOp.equals (oper, oper')) + then (mayAlign + [loop + (lhs, + {isStatement = isStatement}, + opers'), + seq [BinaryOp.layout oper, + str " ", + loop (rhs, + {isStatement = false}, + opers'')]]) + else loop' opers'' + in + loop' opers + end + | _ => layoutUnaryExp (e, {isStatement = isStatement})) + arg + in + loop (e, {isStatement = isStatement}, BinaryOp.precedencesRev) + end + + and layoutCall (f, args) = + mayAlign [f, indent (layoutArguments args, 2)] + + and layoutSelect (object, property) = + seq [object, str "[", layoutExp property, str "]"] + + and layoutSelectId (object, property) = + seq [object, str ".", Id.layout property] + + and layoutConditionalExp (e, z as {isStatement = _, mayHaveIn}) = + case e of + Cond {elsee, test, thenn} => + let + val mhi = {isStatement = false, + mayHaveIn = mayHaveIn} + in + align [layoutBinaryExp (test, z), + seq [str "? ", layoutAssignmentExpGen (thenn, mhi)], + seq [str ": ", layoutAssignmentExpGen (elsee, mhi)]] + end + | _ => layoutBinaryExp (e, z) + + and layoutExp e = + layoutExpGen (e, {isStatement = false, mayHaveIn = true}) + + and layoutExpGen (e, {isStatement, mayHaveIn}) = + case e of + Seq es => + commaList + (Vector.mapi + (es, fn (i, e) => + layoutAssignmentExpGen + (e, {isStatement = isStatement andalso i = 0, + mayHaveIn = mayHaveIn})), + fn z => z) + | _ => layoutAssignmentExpGen (e, {isStatement = isStatement, + mayHaveIn = mayHaveIn}) + + and layoutExpOpt eo = + case eo of + NONE => empty + | SOME e => layoutExp e + + and layoutExpNoInOpt eo = + case eo of + NONE => empty + | SOME e => layoutExpGen (e, {isStatement = false, + mayHaveIn = false}) + + and layoutFunction (keyword, {args, body, name}) = + align [seq [str keyword, + case name of + NONE => empty + | SOME id => seq [str " ", Id.layout id], + str " ", tuple (Vector.toListMap (args, Id.layout)), + str " {"], + indent (layoutStatements body, 2), + str "}"] + + and layoutLeftHandSideExp (e, {isStatement}) = + case e of + New _ => layoutNewExp e + | _ => + let + fun loop (e, {precedesDot}) = + case e of + Call {args, func} => + layoutCall (loop (func, + {precedesDot = false}), + args) + | Select {object, property} => + layoutSelect (loop (object, + {precedesDot = false}), + property) + | SelectId {object, property} => + layoutSelectId (loop (object, + {precedesDot = true}), + property) + | _ => layoutMemberExp (e, {isStatement = isStatement, + precedesDot = precedesDot}) + in + loop (e, {precedesDot = false}) + end + + and layoutMemberExp (e, {isStatement, precedesDot}) = + case e of + New {args, object} => + seq [str "new ", + layoutMemberExp (object, {isStatement = false, + precedesDot = false}), + layoutArguments args] + | Function z => + let + val f = layoutFunction ("function", z) + in + if isStatement then paren f else f + end + | Select {object, property} => + layoutSelect (layoutMemberExp (object, + {isStatement = isStatement, + precedesDot = false}), + property) + | SelectId {object, property} => + layoutSelectId (layoutMemberExp (object, + {isStatement = isStatement, + precedesDot = true}), + property) + | _ => layoutPrimaryExp (e, {isStatement = isStatement, + precedesDot = precedesDot}) + + and layoutNewExp e = + case e of + New {args, object} => + seq [str "new ", + if 0 = Vector.length args + then layoutNewExp object + else seq [layoutMemberExp (object, + {isStatement = false, + precedesDot = false}), + layoutArguments args]] + | _ => layoutMemberExp (e, {isStatement = false, + precedesDot = false}) + + and layoutPostfixExp (e, is) = + case e of + Unary {exp, oper} => + if UnaryOp.isPostfix oper + then seq [layoutLeftHandSideExp (exp, is), + UnaryOp.layout oper] + else layoutLeftHandSideExp (e, is) + | _ => layoutLeftHandSideExp (e, is) + + and layoutPrimaryExp (e, {isStatement, precedesDot}) = + case e of + Array es => + seq [str "[", + seq (rev + (#2 + (Vector.fold + (es, (false, []), fn (eo, (z, ac)) => + let + val ac = str (if z then "," else "") :: ac + in + case eo of + NONE => (false, str "," :: ac) + | SOME e => + (true, layoutAssignmentExp e :: ac) + end)))), + str "]"] + | Bool b => Bool.layout b + | Id id => Id.layout id + | Number n => + let + val s = Number.toString n + in + if precedesDot + andalso not (Pervasive.String.contains (s, #".")) then + paren (str s) + else str s + end + | Null => str "null" + | Object inits => + let + val z = + seq [str "{", + commaList (inits, layoutObjectInit), + str "}"] + in + if isStatement then paren z else z + end + | Regexp r => Regexp.layout r + | String s => String.layout s + | This => str "this" + | _ => paren (layoutExp e) + + and layoutObjectInit oi = + case oi of + Get {args, body, name} => + layoutFunction ("get", {args = args, + body = body, + name = SOME name}) + | Property {property, value} => + seq [PropertyName.layout property, + str ": ", + layoutAssignmentExp value] + | Set {args, body, name} => + layoutFunction ("set", {args = args, + body = body, + name = SOME name}) + + and layoutStatementStart (s, pre: Layout.t) + : Layout.t * Layout.t option = + case s of + Block ss => + (align [seq [pre, str " {"], + indent (align (Vector.toListMap + (ss, layoutStatement)), + 2)], + SOME (str "}")) + | _ => (align [pre, indent (layoutStatement s, 2)], + NONE) + + and combine (l: Layout.t option, l': Layout.t option) = + case (l, l') of + (NONE, NONE) => NONE + | (SOME l, NONE) => SOME l + | (NONE, SOME l') => SOME l' + | (SOME l, SOME l') => SOME (seq [l, str " ", l']) + + and layoutStatementIn (s, pre: Layout.t, suf: Layout.t option) + : Layout.t = + let + val (l, suf0) = layoutStatementStart (s, pre) + in + case combine (suf0, suf) of + NONE => l + | SOME suf => align [l, suf] + end + + and layoutStatement (s: Statement.t): Layout.t = + case s of + Block ss => + align [str "{", indent (layoutStatements ss, 2), str "}"] + | Break ido => + seq [str "break", + case ido of + NONE => empty + | SOME id => seq [str " ", Id.layout id], + str ";"] + | Const ds => + seq [str "const ", + commaList (ds, fn (x, e) => + layoutVariableDeclaration (x, SOME e)), + str ";"] + | Continue ido => + seq [str "continue", + case ido of + NONE => empty + | SOME id => seq [str " ", Id.layout id], + str ";"] + | Do {body, test} => + layoutStatementIn + (body, str "do", + SOME (seq [str "while ", paren (layoutExp test), str ";"])) + | Empty => str ";" + | Exp e => + seq [layoutExpGen (e, {isStatement = true, + mayHaveIn = true}), + str ";"] + | For {body, inc, init, test} => + for (mayAlign [seq [layoutExpNoInOpt init, str ";"], + seq [layoutExpOpt test, str ";"], + layoutExpOpt inc], + body) + | ForIn {body, lhs, object} => + for (seq [layoutLeftHandSideExp (lhs, {isStatement = false}), + str " in ", + layoutExp object], + body) + | ForVar {body, inc, init, test} => + for (mayAlign + [seq [str "var ", + commaList (init, layoutVariableDeclarationNoIn), + str ";"], + seq [layoutExpOpt test, str ";"], + layoutExpOpt inc], + body) + | ForVarIn {body, id, init, object} => + for (seq [str "var ", + layoutVariableDeclarationNoIn (id, init), + str " in ", + layoutExp object], + body) + | FunctionDec {args, body, name} => + layoutFunction ("function", + {args = args, + body = body, + name = SOME name}) + | If {elsee, test, thenn} => + let + fun loop (pre, test, thenn, elsee) = + let + fun catchesElse s = + case s of + If {elsee, thenn, ...} => + (case elsee of + NONE => true + | SOME e => catchesElse e) + | _ => false + val thenn = + if isSome elsee andalso catchesElse thenn then + Block (Vector.new1 thenn) + else + thenn + val (pre, suf) = + layoutStatementStart + (thenn, + seq [pre, str "if ", paren (layoutExp test)]) + in + case elsee of + NONE => + (case suf of + NONE => pre + | SOME suf => align [pre, suf]) + | SOME s => + align + [pre, + let + val e = + valOf (combine (suf, SOME (str "else"))) + in + case s of + If {elsee, test, thenn} => + loop (seq [e, str " "], test, + thenn, elsee) + | _ => layoutStatementIn (s, e, NONE) + end] + end + in + loop (str "", test, thenn, elsee) + end + | Labeled (id, s) => + align [seq [Id.layout id, str ":"], + layoutStatement s] + | Return eo => + seq [str "return", + case eo of + NONE => empty + | SOME e => seq [str " ", layoutExp e], + str ";"] + | Switch {clauses, test} => + align [seq [str "switch ", paren (layoutExp test), str " {"], + align (Vector.toListMap + (clauses, fn (eo, ss) => + align [case eo of + NONE => str "default:" + | SOME e => seq [str "case ", + layoutExp e, str ":"], + indent (layoutStatements ss, 2)])), + str "}"] + | Throw e => seq [str "throw ", layoutExp e, str ";"] + | Try {body, catch, finally} => + align [str "try {", + indent (layoutStatements body, 2), + case catch of + NONE => empty + | SOME (id, ss) => + align + [seq [str "} catch ", paren (Id.layout id), + str " {"], + indent (layoutStatements ss, 2)], + case finally of + NONE => empty + | SOME ss => + align [str "} finally {", + indent (layoutStatements ss, 2)], + str "}"] + | Var ds => + seq [str "var ", + commaList (ds, layoutVariableDeclaration), + str ";"] + | While {body, test} => + layoutStatementIn + (body, seq [str "while ", paren (layoutExp test)], NONE) + | With {body, object} => + layoutStatementIn + (body, seq [str "with ", paren (layoutExp object)], NONE) + and layoutStatements ss = + align (Vector.toListMap (ss, layoutStatement)) + + and layoutUnaryExp (e, {isStatement}) = + let + fun loop (e, {isStatement, lastOp}) = + let + fun done () = + seq [case lastOp of + NONE => empty + | SOME oper => + if UnaryOp.isSymbolic oper + then empty + else str " ", + layoutPostfixExp (e, {isStatement = isStatement})] + in + case e of + Unary {exp, oper} => + if UnaryOp.isPrefix oper + then seq [(case lastOp of + NONE => empty + | SOME oper' => + if UnaryOp.mustSeparate + (oper', oper) + then str " " + else empty), + UnaryOp.layout oper, + loop (exp, {isStatement = false, + lastOp = SOME oper})] + else done () + | _ => done () + end + in + loop (e, {isStatement = isStatement, lastOp = NONE}) + end + + and layoutVariableDeclaration z = + layoutVariableDeclarationGen (z, {mayHaveIn = true}) + + and layoutVariableDeclarationNoIn z = + layoutVariableDeclarationGen (z, {mayHaveIn = false}) + + and layoutVariableDeclarationGen ((id, eo), {mayHaveIn}) = + seq [Id.layout id, + case eo of + NONE => empty + | SOME e => seq [str " = ", + layoutAssignmentExpGen + (e, {isStatement = false, + mayHaveIn = mayHaveIn})]] + end + end + +structure Exp = + struct + open Exp + + val layout = Joint.layoutExp + + val toString = Layout.toString o layout + + val int = Number o Number.fromInt + + fun word w = Number (Number.fromReal (Real.fromIntInf (Word.toIntInf w))) + + val string = String o String.fromString + + fun seq es = + if 1 = Vector.length es + then Vector.sub (es, 0) + else Seq es + + val falsee = Bool false + val truee = Bool true + + fun object v = Object (Vector.map (v, ObjectInit.Property)) + + fun select {object: t, property: t}: t = + let + fun simple () = Select {object = object, property = property} + in + case property of + String s => + if String.isValidIdentifier s + then (SelectId + {object = object, + property = Id.fromString (String.toString s)}) + else simple () + | _ => simple () + end + + val isBool = fn Bool _ => true | _ => false + + val isFalse = fn Bool true => true | _ => false + + val isTrue = fn Bool true => true | _ => false + + fun array (n: t): t = + New {args = Vector.new1 n, + object = Id (Id.fromString "Array")} + + fun not e = + let + datatype z = datatype UnaryOp.t + fun keep () = Unary {exp = e, oper = LogicalNot} + in + case e of + Binary {lhs, oper, rhs} => + let + datatype z = datatype BinaryOp.t + fun make oper = Binary {lhs = lhs, oper = oper, rhs = rhs} + in + case oper of + Equals => make NotEquals + | GreaterThan => make LessThanEqual + | GreaterThanEqual => make LessThan + | LessThan => make GreaterThanEqual + | LessThanEqual => make GreaterThan + | NotEquals => make Equals + | StrictEquals => make StrictNotEquals + | StrictNotEquals => make StrictEquals + | _ => keep () + end + | Unary {exp, oper} => + (case oper of + LogicalNot => exp + | _ => keep ()) + | _ => keep () + end + end + +structure Joint = + struct + open Joint + + fun simplifyExps es = Vector.map (es, simplifyExp) + and simplifyExpOpt eo = Option.map (eo, simplifyExp) + and simplifyExp (e: exp): exp = + case e of + Array eos => Array (Vector.map (eos, simplifyExpOpt)) + | Assign {lhs, oper, rhs} => + Assign {lhs = simplifyExp lhs, + oper = oper, + rhs = simplifyExp rhs} + | Bool _ => e + | Binary {lhs, oper, rhs} => + let + val lhs = simplifyExp lhs + val rhs = simplifyExp rhs + fun keep () = Binary {lhs = lhs, oper = oper, rhs = rhs} + datatype z = datatype BinaryOp.t + in + case oper of + Equals => + (case (lhs, rhs) of + (Number n, _) => + if Number.isZero n then Exp.not rhs else keep () + | (_, Number n) => + if Number.isZero n then Exp.not lhs else keep () + | _ => keep ()) + | NotEquals => + (case (lhs, rhs) of + (Number n, _) => + if Number.isZero n then rhs else keep () + | (_, Number n) => + if Number.isZero n then lhs else keep () + | _ => keep ()) + | _ => keep () + end + | Call {args, func} => Call {args = simplifyExps args, + func = simplifyExp func} + | Cond {elsee, test, thenn} => + Cond {elsee = simplifyExp elsee, + test = simplifyExp test, + thenn = simplifyExp thenn} + | Function {args, body, name} => + Function {args = args, + body = simplifyStatements body, + name = name} + | Id _ => e + | New {args, object} => + New {args = simplifyExps args, object = simplifyExp object} + | Number _ => e + | Null => e + | Object ois => + Object (Vector.map + (ois, fn oi => + let + datatype z = datatype ObjectInit.t + in + case oi of + Get _ => oi + | Property {property, value} => + Property {property = property, + value = simplifyExp value} + | Set _ => oi + end)) + | Regexp _ => e + | Seq es => Seq (Vector.map (es, simplifyExp)) + | Select {object, property} => + Select {object = simplifyExp object, + property = simplifyExp property} + | SelectId {object, property} => + SelectId {object = simplifyExp object, + property = property} + | String _ => e + | Unary {exp, oper} => + let + val exp = simplifyExp exp + datatype z = datatype UnaryOp.t + in + case oper of + LogicalNot => Exp.not exp + | _ => Unary {exp = exp, oper = oper} + end + | This => e + and simplifyStatements ss = Vector.map (ss, simplifyStatement) + and simplifyStatementOpt so = Option.map (so, simplifyStatement) + and simplifyStatement (s: statement): statement = + case s of + Block ss => Block (simplifyStatements ss) + | Break _ => s + | Const ies => + Const (Vector.map (ies, fn (i, e) => (i, simplifyExp e))) + | Continue _ => s + | Do {body, test} => Do {body = simplifyStatement body, + test = simplifyExp test} + | Empty => s + | Exp e => Exp (simplifyExp e) + | For {body, inc, init, test} => + For {body = simplifyStatement body, + inc = simplifyExpOpt inc, + init = simplifyExpOpt init, + test = simplifyExpOpt test} + | ForIn {body, lhs, object} => + ForIn {body = simplifyStatement body, + lhs = simplifyExp lhs, + object = simplifyExp object} + | ForVar {body, inc, init, test} => + ForVar {body = simplifyStatement body, + inc = simplifyExpOpt inc, + init = Vector.map (init, fn (i, eo) => + (i, simplifyExpOpt eo)), + test = simplifyExpOpt test} + | ForVarIn {body, id, init, object} => + ForVarIn {body = simplifyStatement body, + id = id, + init = simplifyExpOpt init, + object = simplifyExp object} + | FunctionDec {args, body, name} => + FunctionDec {args = args, + body = Vector.map (body, simplifyStatement), + name = name} + | If {elsee, test, thenn} => + let + val elsee = simplifyStatementOpt elsee + val test = simplifyExp test + val thenn = simplifyStatement thenn + in + case (test, elsee) of + (Unary {exp, oper = UnaryOp.LogicalNot}, SOME elsee) => + If {elsee = SOME thenn, + test = exp, + thenn = elsee} + | _ => If {elsee = elsee, test = test, thenn = thenn} + end + | Labeled (id, s) => + Labeled (id, simplifyStatement s) + | Return eo => + Return (simplifyExpOpt eo) + | Switch {clauses, test} => + Switch {clauses = Vector.map (clauses, fn (eo, ss) => + (simplifyExpOpt eo, + simplifyStatements ss)), + test = simplifyExp test} + | Throw e => Throw (simplifyExp e) + | Try {body, catch, finally} => + Try {body = simplifyStatements body, + catch = Option.map (catch, fn (i, ss) => + (i, simplifyStatements ss)), + finally = Option.map (finally, simplifyStatements)} + | Var ies => + Var (Vector.map (ies, fn (i, eo) => (i, simplifyExpOpt eo))) + | While {body, test} => + While {body = simplifyStatement body, + test = simplifyExp test} + | With {body, object} => + With {body = simplifyStatement body, + object = simplifyExp object} + end + + +structure ObjectInit = + struct + datatype t = datatype Joint.objectInit + end + +structure Statement = + struct + open Statement + + val layout = Joint.layoutStatement + + fun scope (s: t vector): t = + Exp (Exp.Call {args = Vector.new0 (), + func = Exp.Function {args = Vector.new0 (), + body = s, + name = NONE}}) + end + +structure Program = + struct + datatype t = T of Statement.t vector + + fun layout (T ss) = Joint.layoutStatements ss + + fun layouts (T ss, lay) = Vector.foreach (ss, lay o Statement.layout) + + fun simplify (T ss) = T (Joint.simplifyStatements ss) + end + +end Added: mltonlib/trunk/com/entain/javascript/unstable/javascript.grm =================================================================== --- mltonlib/trunk/com/entain/javascript/unstable/javascript.grm 2006-10-29 18:53:30 UTC (rev 4796) +++ mltonlib/trunk/com/entain/javascript/unstable/javascript.grm 2006-10-30 22:20:10 UTC (rev 4797) @@ -0,0 +1,650 @@ +(* Copyright (C) 2006 Entain, Inc. + * + * This code is released under the MLton license, a BSD-style license. + * See the LICENSE file or http://mlton.org/License for details. + *) + +%% + +%eop EOF +%header (functor Parser (structure Token: TOKEN)) +%keyword BREAK CASE CATCH CONTINUE DEFAULT DELETE DO ELSE FINALLY FOR + FUNCTION IF IN INSTANCE_OF NEW RETURN SWITCH THIS THROW TRY TYPEOF VAR + VOID WHILE WITH +%name JAVASCRIPT +%noshift EOF +%pos SourcePos.t +%start Program +%verbose + +%term + ADDOP of string + | ASSIGNOP of string + | BANG + | BITOP of string + | BOOLEAN of string + | BREAK + | CASE + | CATCH + | COLON + | COMMA + | CONTINUE + | DEFAULT + | DELETE + | DO + | DOT + | ELSE + | EOF + | EQUALOP of string + | EQUALS + | FINALLY + | FOR + | FUNCTION + | IDENTIFIER of string + | IF + | IN + | INCOP of string + | INSTANCE_OF + | LBRACE + | LBRACKET + | LINE + | LOGICOP of string + | LPAREN + | MULOP of string + | NEW + | NULL + | NUMBER of string + | QUESTION + | RBRACE + | RBRACKET + | REGEXP of {body: string, caseSensitive: bool, global: bool} + | RELOP of string + | RETURN + | RPAREN + | SEMICOLON + | SHIFTOP of string + | STRING of string + | SWITCH + | THIS + | THROW + | TILDE + | TRY + | TYPEOF + | VAR + | VOID + | WHILE + | WITH + +%nonterm + AssignOpL + | CommaL + | DotL + | EqualsL + | LbraceL + | LbracketL + | LparenL + | RbraceL + | RbracketL + | RparenL + | InL + | QuestionL + | LogicalOrExpressionL + | UnaryExpressionL + | AssignmentExpressionNoInL + | ColonL + | ArgumentList + | ArgumentListL + | ArgumentListOpt + | ArgumentListOptL + | Arguments + | ArgumentsL + | ArrayLiteral + | AssignmentExpression + | AssignmentExpressionAS + | AssignmentExpressionL + | AssignmentExpressionNoIn + | AssignmentOperator + | AssignmentOperatorL + | Block + | BooleanLiteral + | CallExpression + | CallExpressionAS + | CallExpressionL + | CallExpressionRest + | CallExpressionRestL + | CaseBlock + | CaseClause + | CaseClauseOpt + | CaseClauses + | CaseClausesOpt + | Catch + | ConditionalExpression + | ConditionalExpressionAS + | ConditionalExpressionNoIn + | ConditionalExpressionL + | DefaultClause + | ElementList + | Elision + | ElisionOpt + | Expression + | ExpressionAS + | ExpressionL + | ExpressionNoIn + | ExpressionNoInOpt + | ExpressionOpt + | Finally + | FormalParameterList + | FormalParameterListOpt + | FunctionBody + | FunctionDeclaration + | FunctionExpression + | Identifier + | IdentifierL + | IdentifierOpt + | Initializer + | InitializerNoIn + | InitializerNoInOpt + | InitializerOpt + | LeftHandSideExpression + | LeftHandSideExpressionAS + | LeftHandSideExpressionL + | Literal + | Line + | LogicalOrExpression + | LogicalOrExpressionAS + | LogicalOrExpressionNoIn + | LogicalOrOp + | LogicalOrOpNoIn + | MemberExpression + | MemberExpressionAS + | MemberExpressionL + | NewExpression + | NewExpressionAS + | NewExpressionL + | News + | NullLiteral + | NumericLiteral + | ObjectLiteral + | OptionalSemi + | PostfixExpression + | PostfixExpressionAS + | PrimaryExpression + | PrimaryExpressionAS + | PropertyName + | PropertyNameAndValueList + | Program + | RegexpLiteral + | SourceElement + | SourceElementOS + | SourceElementsOS + | Statement + | Statement2 + | StatementBeforeSemi + | StatementList + | StatementListOS (* Optional Semi *) + | StatementListOpt ... [truncated message content] |
|
From: Vesa K. <ve...@ml...> - 2006-10-29 10:53:32
|
Documentation.
----------------------------------------------------------------------
U mltonlib/trunk/com/ssh/extended-basis/unstable/readme.txt
----------------------------------------------------------------------
Modified: mltonlib/trunk/com/ssh/extended-basis/unstable/readme.txt
===================================================================
--- mltonlib/trunk/com/ssh/extended-basis/unstable/readme.txt 2006-10-29 18:44:21 UTC (rev 4795)
+++ mltonlib/trunk/com/ssh/extended-basis/unstable/readme.txt 2006-10-29 18:53:30 UTC (rev 4796)
@@ -31,14 +31,14 @@
(export*.sml). The contents of this directory should be sufficient
to understand the extensions provided by this library.
- basis.mlb, basis.cm
+ basis.{cm,mlb,use}
These build files define the extended basis library including all of
the original basis library. The idea is that users refer to one of
these, depending on the compiler, instead of the original basis
library. See the build files for further instructions.
- extensions.mlb, extensions.cm
+ extensions.{cm,mlb,use}
These build files define only the extensions provided by this
library. Users may refer to these files, but they are probably more
|
|
From: Vesa K. <ve...@ml...> - 2006-10-29 10:44:23
|
Documentation.
----------------------------------------------------------------------
U mltonlib/trunk/com/ssh/extended-basis/unstable/public/substring.sig
----------------------------------------------------------------------
Modified: mltonlib/trunk/com/ssh/extended-basis/unstable/public/substring.sig
===================================================================
--- mltonlib/trunk/com/ssh/extended-basis/unstable/public/substring.sig 2006-10-29 18:43:52 UTC (rev 4794)
+++ mltonlib/trunk/com/ssh/extended-basis/unstable/public/substring.sig 2006-10-29 18:44:21 UTC (rev 4795)
@@ -4,6 +4,9 @@
* See the file MLton-LICENSE for details.
*)
+(**
+ * Extended {SUBSTRING} signature.
+ *)
signature SUBSTRING = sig
include SUBSTRING
|
|
From: Vesa K. <ve...@ml...> - 2006-10-29 10:43:58
|
Added extended List :> LIST module.
----------------------------------------------------------------------
A mltonlib/trunk/com/ssh/extended-basis/unstable/detail/list.sml
U mltonlib/trunk/com/ssh/extended-basis/unstable/detail/smlnj/unsealed.cm
U mltonlib/trunk/com/ssh/extended-basis/unstable/extensions.mlb
U mltonlib/trunk/com/ssh/extended-basis/unstable/extensions.use
U mltonlib/trunk/com/ssh/extended-basis/unstable/public/export.sml
A mltonlib/trunk/com/ssh/extended-basis/unstable/public/list.sig
----------------------------------------------------------------------
Added: mltonlib/trunk/com/ssh/extended-basis/unstable/detail/list.sml
===================================================================
--- mltonlib/trunk/com/ssh/extended-basis/unstable/detail/list.sml 2006-10-29 18:19:12 UTC (rev 4793)
+++ mltonlib/trunk/com/ssh/extended-basis/unstable/detail/list.sml 2006-10-29 18:43:52 UTC (rev 4794)
@@ -0,0 +1,13 @@
+(* Copyright (C) 2006 SSH Communications Security, Helsinki, Finland
+ *
+ * MLton is released under a BSD-style license.
+ * See the file MLton-LICENSE for details.
+ *)
+
+(**
+ * Extended {List :> LIST} structure.
+ *)
+structure List : LIST = struct
+ open List
+ val sub = nth
+end
Property changes on: mltonlib/trunk/com/ssh/extended-basis/unstable/detail/list.sml
___________________________________________________________________
Name: svn:eol-style
+ native
Modified: mltonlib/trunk/com/ssh/extended-basis/unstable/detail/smlnj/unsealed.cm
===================================================================
--- mltonlib/trunk/com/ssh/extended-basis/unstable/detail/smlnj/unsealed.cm 2006-10-29 18:19:12 UTC (rev 4793)
+++ mltonlib/trunk/com/ssh/extended-basis/unstable/detail/smlnj/unsealed.cm 2006-10-29 18:43:52 UTC (rev 4794)
@@ -11,6 +11,7 @@
../../public/int-inf.sig
../../public/integer.sig
../../public/iso.sig
+ ../../public/list.sig
../../public/mono-array.sig
../../public/mono-vector.sig
../../public/real.sig
@@ -23,6 +24,7 @@
../common.sml
../emb.sml
../iso.sml
+ ../list.sml
../smlnj/ints.sml
../smlnj/mono-arrays.sml
../smlnj/mono-vectors.sml
Modified: mltonlib/trunk/com/ssh/extended-basis/unstable/extensions.mlb
===================================================================
--- mltonlib/trunk/com/ssh/extended-basis/unstable/extensions.mlb 2006-10-29 18:19:12 UTC (rev 4793)
+++ mltonlib/trunk/com/ssh/extended-basis/unstable/extensions.mlb 2006-10-29 18:43:52 UTC (rev 4794)
@@ -54,6 +54,7 @@
public/integer.sig
public/real.sig
public/word.sig
+ public/list.sig
public/vector.sig
public/array.sig
public/mono-vector.sig
@@ -64,6 +65,7 @@
public/text.sig
(* Extended modules *)
+ detail/list.sml
detail/vector.sml
detail/array.sml
detail/common.sml
Modified: mltonlib/trunk/com/ssh/extended-basis/unstable/extensions.use
===================================================================
--- mltonlib/trunk/com/ssh/extended-basis/unstable/extensions.use 2006-10-29 18:19:12 UTC (rev 4793)
+++ mltonlib/trunk/com/ssh/extended-basis/unstable/extensions.use 2006-10-29 18:43:52 UTC (rev 4794)
@@ -37,6 +37,7 @@
"public/integer.sig",
"public/real.sig",
"public/word.sig",
+ "public/list.sig",
"public/vector.sig",
"public/array.sig",
"public/mono-vector.sig",
@@ -47,6 +48,7 @@
"public/text.sig",
(* Extended modules *)
+ "detail/list.sml",
"detail/vector.sml",
"detail/array.sml",
"detail/common.sml",
Modified: mltonlib/trunk/com/ssh/extended-basis/unstable/public/export.sml
===================================================================
--- mltonlib/trunk/com/ssh/extended-basis/unstable/public/export.sml 2006-10-29 18:19:12 UTC (rev 4793)
+++ mltonlib/trunk/com/ssh/extended-basis/unstable/public/export.sml 2006-10-29 18:43:52 UTC (rev 4794)
@@ -15,6 +15,7 @@
signature INTEGER = INTEGER
signature INT_INF = INT_INF
signature ISO = ISO
+signature LIST = LIST
signature MONO_ARRAY = MONO_ARRAY
signature MONO_VECTOR = MONO_VECTOR
signature REAL = REAL
@@ -34,6 +35,7 @@
structure LargeInt : INTEGER = LargeInt
structure LargeReal : REAL = LargeReal
structure LargeWord : WORD = LargeWord
+structure List : LIST = List
structure Position : INTEGER = Position
structure Real : REAL = Real
structure String : STRING = String
Added: mltonlib/trunk/com/ssh/extended-basis/unstable/public/list.sig
===================================================================
--- mltonlib/trunk/com/ssh/extended-basis/unstable/public/list.sig 2006-10-29 18:19:12 UTC (rev 4793)
+++ mltonlib/trunk/com/ssh/extended-basis/unstable/public/list.sig 2006-10-29 18:43:52 UTC (rev 4794)
@@ -0,0 +1,18 @@
+(* Copyright (C) 2006 SSH Communications Security, Helsinki, Finland
+ *
+ * MLton is released under a BSD-style license.
+ * See the file MLton-LICENSE for details.
+ *)
+
+(**
+ * Extended {LIST} signature.
+ *)
+signature LIST = sig
+ include LIST
+
+ val sub : 'a list * int -> 'a
+ (**
+ * {sub (l, i)} returns the {i}th element of the list {l}. This is
+ * equivalent to {nth}.
+ *)
+end
Property changes on: mltonlib/trunk/com/ssh/extended-basis/unstable/public/list.sig
___________________________________________________________________
Name: svn:eol-style
+ native
|
|
From: Vesa K. <ve...@ml...> - 2006-10-29 10:19:15
|
Added extended Substring :> SUBSTRING module.
----------------------------------------------------------------------
U mltonlib/trunk/com/ssh/extended-basis/unstable/detail/common.sml
U mltonlib/trunk/com/ssh/extended-basis/unstable/detail/mk-text-ext.fun
U mltonlib/trunk/com/ssh/extended-basis/unstable/detail/smlnj/unsealed.cm
U mltonlib/trunk/com/ssh/extended-basis/unstable/extensions.mlb
U mltonlib/trunk/com/ssh/extended-basis/unstable/extensions.use
U mltonlib/trunk/com/ssh/extended-basis/unstable/public/export.sml
A mltonlib/trunk/com/ssh/extended-basis/unstable/public/substring.sig
----------------------------------------------------------------------
Modified: mltonlib/trunk/com/ssh/extended-basis/unstable/detail/common.sml
===================================================================
--- mltonlib/trunk/com/ssh/extended-basis/unstable/detail/common.sml 2006-10-29 17:51:40 UTC (rev 4792)
+++ mltonlib/trunk/com/ssh/extended-basis/unstable/detail/common.sml 2006-10-29 18:19:12 UTC (rev 4793)
@@ -26,3 +26,4 @@
structure CharArray = Text.CharArray
structure CharVector = Text.CharVector
structure String = Text.String
+structure Substring = Text.Substring
Modified: mltonlib/trunk/com/ssh/extended-basis/unstable/detail/mk-text-ext.fun
===================================================================
--- mltonlib/trunk/com/ssh/extended-basis/unstable/detail/mk-text-ext.fun 2006-10-29 17:51:40 UTC (rev 4792)
+++ mltonlib/trunk/com/ssh/extended-basis/unstable/detail/mk-text-ext.fun 2006-10-29 18:19:12 UTC (rev 4793)
@@ -29,4 +29,9 @@
val embString = (toString, fromString)
val isoList = (explode, implode)
end
+
+ structure Substring = struct
+ open Substring
+ val length = size
+ end
end
Modified: mltonlib/trunk/com/ssh/extended-basis/unstable/detail/smlnj/unsealed.cm
===================================================================
--- mltonlib/trunk/com/ssh/extended-basis/unstable/detail/smlnj/unsealed.cm 2006-10-29 17:51:40 UTC (rev 4792)
+++ mltonlib/trunk/com/ssh/extended-basis/unstable/detail/smlnj/unsealed.cm 2006-10-29 18:19:12 UTC (rev 4793)
@@ -15,6 +15,7 @@
../../public/mono-vector.sig
../../public/real.sig
../../public/string.sig
+ ../../public/substring.sig
../../public/text.sig
../../public/vector.sig
../../public/word.sig
Modified: mltonlib/trunk/com/ssh/extended-basis/unstable/extensions.mlb
===================================================================
--- mltonlib/trunk/com/ssh/extended-basis/unstable/extensions.mlb 2006-10-29 17:51:40 UTC (rev 4792)
+++ mltonlib/trunk/com/ssh/extended-basis/unstable/extensions.mlb 2006-10-29 18:19:12 UTC (rev 4793)
@@ -60,6 +60,7 @@
public/mono-array.sig
public/char.sig
public/string.sig
+ public/substring.sig
public/text.sig
(* Extended modules *)
@@ -73,8 +74,8 @@
detail/$(SML_COMPILER)/mono-arrays.sml
detail/$(SML_COMPILER)/texts.sml
in
+ public/export-$(SML_COMPILER).sml
public/export.sml
- public/export-$(SML_COMPILER).sml
end
end
end
Modified: mltonlib/trunk/com/ssh/extended-basis/unstable/extensions.use
===================================================================
--- mltonlib/trunk/com/ssh/extended-basis/unstable/extensions.use 2006-10-29 17:51:40 UTC (rev 4792)
+++ mltonlib/trunk/com/ssh/extended-basis/unstable/extensions.use 2006-10-29 18:19:12 UTC (rev 4793)
@@ -43,6 +43,7 @@
"public/mono-array.sig",
"public/char.sig",
"public/string.sig",
+ "public/substring.sig",
"public/text.sig",
(* Extended modules *)
@@ -60,6 +61,6 @@
"detail/"^compiler^"/forget.use",
(* Export filter *)
- "public/export.sml",
- "public/export-"^compiler^".sml"]
+ "public/export-"^compiler^".sml",
+ "public/export.sml"]
end
Modified: mltonlib/trunk/com/ssh/extended-basis/unstable/public/export.sml
===================================================================
--- mltonlib/trunk/com/ssh/extended-basis/unstable/public/export.sml 2006-10-29 17:51:40 UTC (rev 4792)
+++ mltonlib/trunk/com/ssh/extended-basis/unstable/public/export.sml 2006-10-29 18:19:12 UTC (rev 4793)
@@ -19,6 +19,7 @@
signature MONO_VECTOR = MONO_VECTOR
signature REAL = REAL
signature STRING = STRING
+signature SUBSTRING = SUBSTRING
signature TEXT = TEXT
signature VECTOR = VECTOR
signature WORD = WORD
@@ -36,6 +37,7 @@
structure Position : INTEGER = Position
structure Real : REAL = Real
structure String : STRING = String
+structure Substring : SUBSTRING = Substring
structure Text : TEXT = Text
structure Vector : VECTOR = Vector
structure Word : WORD = Word
Added: mltonlib/trunk/com/ssh/extended-basis/unstable/public/substring.sig
===================================================================
--- mltonlib/trunk/com/ssh/extended-basis/unstable/public/substring.sig 2006-10-29 17:51:40 UTC (rev 4792)
+++ mltonlib/trunk/com/ssh/extended-basis/unstable/public/substring.sig 2006-10-29 18:19:12 UTC (rev 4793)
@@ -0,0 +1,15 @@
+(* Copyright (C) 2006 SSH Communications Security, Helsinki, Finland
+ *
+ * MLton is released under a BSD-style license.
+ * See the file MLton-LICENSE for details.
+ *)
+
+signature SUBSTRING = sig
+ include SUBSTRING
+
+ val length : substring -> int
+ (**
+ * Returns the size of the given substring. This is equivalent to
+ * {size}.
+ *)
+end
Property changes on: mltonlib/trunk/com/ssh/extended-basis/unstable/public/substring.sig
___________________________________________________________________
Name: svn:eol-style
+ native
|
|
From: Vesa K. <ve...@ml...> - 2006-10-29 09:51:43
|
Removed the extra top-level type bindings.
----------------------------------------------------------------------
U mltonlib/trunk/com/ssh/extended-basis/unstable/detail/emb.sml
U mltonlib/trunk/com/ssh/extended-basis/unstable/detail/iso.sml
U mltonlib/trunk/com/ssh/extended-basis/unstable/public/emb.sig
U mltonlib/trunk/com/ssh/extended-basis/unstable/public/iso.sig
----------------------------------------------------------------------
Modified: mltonlib/trunk/com/ssh/extended-basis/unstable/detail/emb.sml
===================================================================
--- mltonlib/trunk/com/ssh/extended-basis/unstable/detail/emb.sml 2006-10-29 16:20:12 UTC (rev 4791)
+++ mltonlib/trunk/com/ssh/extended-basis/unstable/detail/emb.sml 2006-10-29 17:51:40 UTC (rev 4792)
@@ -8,7 +8,7 @@
* Structure for embeddings.
*)
structure Emb :> EMB = struct
- type ('a, 'b) emb = ('a, 'b) emb
+ type ('a, 'b) emb = ('a -> 'b) * ('b -> 'a option)
val id = (fn a => a, SOME)
Modified: mltonlib/trunk/com/ssh/extended-basis/unstable/detail/iso.sml
===================================================================
--- mltonlib/trunk/com/ssh/extended-basis/unstable/detail/iso.sml 2006-10-29 16:20:12 UTC (rev 4791)
+++ mltonlib/trunk/com/ssh/extended-basis/unstable/detail/iso.sml 2006-10-29 17:51:40 UTC (rev 4792)
@@ -8,7 +8,7 @@
* Structure for isomorphisms.
*)
structure Iso :> ISO = struct
- type ('a, 'b) iso = ('a, 'b) iso
+ type ('a, 'b) iso = ('a -> 'b) * ('b -> 'a)
val id = (fn a => a, fn a => a)
Modified: mltonlib/trunk/com/ssh/extended-basis/unstable/public/emb.sig
===================================================================
--- mltonlib/trunk/com/ssh/extended-basis/unstable/public/emb.sig 2006-10-29 16:20:12 UTC (rev 4791)
+++ mltonlib/trunk/com/ssh/extended-basis/unstable/public/emb.sig 2006-10-29 17:51:40 UTC (rev 4792)
@@ -4,16 +4,14 @@
* See the file MLton-LICENSE for details.
*)
-type ('a, 'b) emb = ('a -> 'b) * ('b -> 'a option)
(**
- * Embedding of {'a} into {'b} with injection and projection functions.
- *)
-
-(**
* Signature for the {Emb} structure for embeddings.
*)
signature EMB = sig
- type ('a, 'b) emb = ('a, 'b) emb
+ type ('a, 'b) emb = ('a -> 'b) * ('b -> 'a option)
+ (**
+ * Embedding of {'a} into {'b} with injection and projection functions.
+ *)
val id : ('a, 'a) emb
(**
Modified: mltonlib/trunk/com/ssh/extended-basis/unstable/public/iso.sig
===================================================================
--- mltonlib/trunk/com/ssh/extended-basis/unstable/public/iso.sig 2006-10-29 16:20:12 UTC (rev 4791)
+++ mltonlib/trunk/com/ssh/extended-basis/unstable/public/iso.sig 2006-10-29 17:51:40 UTC (rev 4792)
@@ -4,17 +4,15 @@
* See the file MLton-LICENSE for details.
*)
-type ('a, 'b) iso = ('a -> 'b) * ('b -> 'a)
(**
- * Isomorphism between {'a} and {'b} with injection and projection
- * functions.
- *)
-
-(**
* Signature for the {Iso} structure for isomorphisms.
*)
signature ISO = sig
- type ('a, 'b) iso = ('a, 'b) iso
+ type ('a, 'b) iso = ('a -> 'b) * ('b -> 'a)
+ (**
+ * Isomorphism between {'a} and {'b} with injection and projection
+ * functions.
+ *)
val id : ('a, 'a) iso
(**
|
|
From: Matthew F. <fl...@ml...> - 2006-10-29 08:20:15
|
Expand '.symbol_stub' to '.section ...', as advocated by the Apple engineers ---------------------------------------------------------------------- U mlton/trunk/mlton/codegen/x86-codegen/x86.fun ---------------------------------------------------------------------- |
|
From: Vesa K. <ve...@ml...> - 2006-10-28 14:40:33
|
"Use" files for SML/NJ. ---------------------------------------------------------------------- A mltonlib/trunk/com/ssh/extended-basis/unstable/detail/smlnj/forget.use A mltonlib/trunk/com/ssh/extended-basis/unstable/detail/smlnj/workarounds.use ---------------------------------------------------------------------- |
|
From: Vesa K. <ve...@ml...> - 2006-10-28 14:32:45
|
"Use" files for Poly/ML. ---------------------------------------------------------------------- A mltonlib/trunk/com/ssh/extended-basis/unstable/basis.use A mltonlib/trunk/com/ssh/extended-basis/unstable/detail/polyml/forget.use A mltonlib/trunk/com/ssh/extended-basis/unstable/detail/polyml/workarounds.use A mltonlib/trunk/com/ssh/extended-basis/unstable/extensions.use ---------------------------------------------------------------------- |