History log of /seL4-l4v-master/HOL4/src/parse/Pretype.sig
Revision Date Author Comments
# a71b1cc0 13-Mar-2018 Michael Norrish <Michael.Norrish@nicta.com.au>

Updated as far as Pretype.sml

Still no use of smpp tech.


# 872e20e7 21-Jul-2016 Michael Norrish <Michael.Norrish@nicta.com.au>

Switch type-checking to errormonad everywhere

The optionmonad doesn't hold any advantage, and flipping back and forth
between them was just annoying.


# a1f463dd 21-Jul-2016 Michael Norrish <Michael.Norrish@nicta.com.au>

Give Pretype environment slightly richer API


# 6af175af 20-Jul-2016 Michael Norrish <Michael.Norrish@nicta.com.au>

Begin to make pretypes purely functional

I want to do without the references that are used in the unification
algorithm.


# 54f9badf 07-Apr-2011 Michael Norrish <Michael.Norrish@nicta.com.au>

Add has_unbound_uvar and mk_fun_ty to Pretype API.

Also document some entrypoints there in the .sig suffix.


# a63e7796 23-Feb-2010 Michael Norrish <Michael.Norrish@nicta.com.au>

Add changes to Pretype required to make TermParse module compile.


# 3683cb2f 28-Aug-2009 Michael Norrish <Michael.Norrish@nicta.com.au>

Move the pretty-printing facilities around a bit so that both SML
implementations use our own version of the PP structure. This
implementation is called HOLPP in src/portableML. After the kernel's
Overlay.sml is loaded, it is also available under the name PP. This
retains fairly good backwards incompatibility. The one deliberate
incompatibility is to make references to General.ppstream invalid.
This makes us better conform with Basis 2002.

The advantage of this manoeuvre is to allow me to better control what
our pretty-printers do at a low level.


# 0024ffaa 27-Nov-2008 Michael Norrish <Michael.Norrish@nicta.com.au>

Debugging Preterm.sml made me write a pretty-printer for pretype
values (and I was almost annoyed enough to write one for Preterms
too). I use Moscow ML compiler magic to get numbers for references,
and have written to the Poly/ML mailing list to ask how to do the same
in poly.


# 3b2b7c12 11-Nov-2008 Michael Norrish <Michael.Norrish@nicta.com.au>

Modifications to support overloading to a pattern. For example, one
can now do
overload_on ("<>", ``\x y. ~(x = y)``)
The parser does the right thing. The pretty-printer remains
blissfully ignorant for the moment. I don't think Unicode aliasing
will work quite yet either. Backwards compatible in that all the
functions in Parse behave the same if given inputs that were
previously acceptable.

"The parser does the right thing" means the following

- set_fixity "<>" (Infix(NONASSOC, 100));
> val it = () : unit

- ``$<>``;
<<HOL message: inventing new type variable names: 'a>>
> val it = ``\x y. ~(x = y)`` : term

- ``$<> p``;
<<HOL message: inventing new type variable names: 'a>>
> val it = ``\y. ~(p = y)`` : term

- ``p <> q``;
<<HOL message: inventing new type variable names: 'a>>
> val it = ``~(p = q)`` : term

When the pretty-printer is working correctly, the output will probably
be

``\x y. x <> y``

``\y. p <> y``

``p <> q``

In the first two cases, fixing what would appear to the user to be an
odd eta-expansion may be too difficult.


# 67274ad0 07-Oct-2003 Joe Hurd <joe@gilith.com>

Added a few newlines at end of files to suppress warnings from my
Mosml -> MLton preprocessor.


# 67005981 09-Apr-2001 Michael Norrish <Michael.Norrish@nicta.com.au>

Changes to make the type parser handle thy$tyname syntax. This syntax
can only be used as suffixes. Thus: (bool,bool) min$fun, for example.


# 118a9046 15-Nov-2000 Konrad Slind <konrad.slind@gmail.com>

Latest mods for making everything paired.


# a2511ab7 02-Nov-2000 Michael Norrish <Michael.Norrish@nicta.com.au>

Changes to bring about Kananaskis parser. Known bug exists in
treatment of qualified identifiers.


# 6e2257c8 11-Aug-1999 Michael Norrish <Michael.Norrish@nicta.com.au>

A number of changes, doing away with the old Pretype and Strm modules.
These changes support the new implementation of the ParseDatatype
module, which now refers to the type parser provided in this directory,
meaning that ParseDatatype can see new user-defined type infixes as and
when they become available.


# caf74236 29-Apr-1999 Michael Norrish <Michael.Norrish@nicta.com.au>

Initial revision