89 |
and var = V of { |
and var = V of { |
90 |
name : string, (* name *) |
name : string, (* name *) |
91 |
id : Stamp.stamp, (* unique ID *) |
id : Stamp.stamp, (* unique ID *) |
92 |
|
ty : Ty.ty, (* type *) |
93 |
bind : var_bind ref, (* binding *) |
bind : var_bind ref, (* binding *) |
94 |
useCnt : int ref, (* count of uses *) |
useCnt : int ref, (* count of uses *) |
95 |
props : PropList.holder |
props : PropList.holder |
197 |
end |
end |
198 |
|
|
199 |
structure Var : sig |
structure Var : sig |
200 |
val new : string -> var |
val new : string * Ty.ty -> var |
201 |
val name : var -> string |
val name : var -> string |
202 |
|
val ty : var -> Ty.ty |
203 |
val binding : var -> var_bind |
val binding : var -> var_bind |
204 |
val setBinding : var * var_bind -> unit |
val setBinding : var * var_bind -> unit |
205 |
val same : var * var -> bool |
val same : var * var -> bool |
316 |
|
|
317 |
and var = V of { |
and var = V of { |
318 |
name : string, (* name *) |
name : string, (* name *) |
319 |
|
ty : Ty.ty, (* type *) |
320 |
bind : var_bind ref, (* binding *) |
bind : var_bind ref, (* binding *) |
321 |
id : Stamp.stamp, (* unique ID *) |
id : Stamp.stamp, (* unique ID *) |
322 |
useCnt : int ref, (* count of uses *) |
useCnt : int ref, (* count of uses *) |
538 |
|
|
539 |
structure Var = |
structure Var = |
540 |
struct |
struct |
541 |
fun new name = V{ |
fun new (name, ty) = V{ |
542 |
name = name, |
name = name, |
543 |
id = Stamp.new(), |
id = Stamp.new(), |
544 |
|
ty = ty, |
545 |
bind = ref VB_NONE, |
bind = ref VB_NONE, |
546 |
useCnt = ref 0, |
useCnt = ref 0, |
547 |
props = PropList.newHolder() |
props = PropList.newHolder() |
548 |
} |
} |
549 |
fun name (V{name, ...}) = name |
fun name (V{name, ...}) = name |
550 |
|
fun ty (V{ty, ...}) = ty |
551 |
fun binding (V{bind, ...}) = !bind |
fun binding (V{bind, ...}) = !bind |
552 |
fun setBinding (V{bind, ...}, vb) = bind := vb |
fun setBinding (V{bind, ...}, vb) = bind := vb |
553 |
fun same (V{id=a, ...}, V{id=b, ...}) = Stamp.same(a, b) |
fun same (V{id=a, ...}, V{id=b, ...}) = Stamp.same(a, b) |