SCM Repository
View of /trunk/src/compiler/ast/var.sml
Parent Directory
|
Revision Log
Revision 173 -
(download)
(annotate)
Sat Jul 24 15:37:50 2010 UTC (10 years, 6 months ago) by jhr
File size: 1162 byte(s)
Sat Jul 24 15:37:50 2010 UTC (10 years, 6 months ago) by jhr
File size: 1162 byte(s)
Cleanup and simplification of AST representation
(* var.sml * * COPYRIGHT (c) 2010 The Diderot Project (http://diderot.cs.uchicago.edu) * All rights reserved. *) structure Var = struct datatype var = datatype AST.var datatype var_kind = datatype AST.var_kind fun nameOf (V{name, ...}) = name fun typeOf (V{ty, ...}) = ty fun monoTypeOf (V{ty=([], ty), ...}) = ty | monoTypeOf (V{name, ...}) = raise Fail(name ^ " is not monomrphic") fun kindOf (V{kind, ...}) = kind fun uniqueNameOf (V{name, id, ...}) = name ^ Stamp.toString id fun new (name, kind, ty) = let val id = Stamp.new() in V{name=Atom.toString name, id=id, kind=kind, ty=([], ty)} end fun newPoly (name, kind, scheme) = let val id = Stamp.new() in V{name=Atom.toString name, id=id, kind=kind, ty=scheme} end fun compare (V{id=a, ...}, V{id=b, ...}) = Stamp.compare(a, b) fun same (V{id=a, ...}, V{id=b, ...}) = Stamp.same(a, b) fun hash (V{id, ...}) = Stamp.hash id local structure V = struct type ord_key = var val compare = compare end in structure Map = RedBlackMapFn (V) structure Set = RedBlackSetFn (V) end end
root@smlnj-gforge.cs.uchicago.edu | ViewVC Help |
Powered by ViewVC 1.0.0 |