| 296 |
let rec expr { loc = loc; descr = d } = |
let rec expr { loc = loc; descr = d } = |
| 297 |
let (fv,td) = |
let (fv,td) = |
| 298 |
match d with |
match d with |
| 299 |
|
| DebugTyper t -> (Fv.empty, Typed.DebugTyper (typ t)) |
| 300 |
| Var s -> (Fv.singleton s, Typed.Var s) |
| Var s -> (Fv.singleton s, Typed.Var s) |
| 301 |
| Apply (e1,e2) -> |
| Apply (e1,e2) -> |
| 302 |
let (fv1,e1) = expr e1 and (fv2,e2) = expr e2 in |
let (fv1,e1) = expr e1 and (fv2,e2) = expr e2 in |
| 381 |
d |
d |
| 382 |
|
|
| 383 |
and compute_type' loc env = function |
and compute_type' loc env = function |
| 384 |
|
| DebugTyper t -> Types.descr t |
| 385 |
| Var s -> Env.find s env |
| Var s -> Env.find s env |
| 386 |
| Apply (e1,e2) -> |
| Apply (e1,e2) -> |
| 387 |
let t1 = compute_type env e1 and t2 = compute_type env e2 in |
let t1 = compute_type env e1 and t2 = compute_type env e2 in |