punct ":", space 1,
dBox [punct "(", p_typ t, punct ")"],
space 1, punct "->", space 1, p_exp e, punct ")"]
+ | EALam (x, p, e) => dBox [punct "(\\", space 1, exp x, space 1,
+ punct ":", space 1, p_pred p,
+ space 1, punct "->", space 1, p_exp e, punct ")"]
| EVar x => exp x
| EApp (e1, e2) => dBox [punct "(", p_exp e1, break {nsp = 1, offset = 0}, p_exp e2, punct ")"]
[dBox [keyword "context", space 1,
ident name]])
+fun p_decl_fref d =
+ case d of
+ DExternType name => dBox [keyword "extern", space 1,
+ keyword "type", space 1,
+ style (HTMLDev.link ("#T_" ^ name), [ident name])]
+ | DExternVal (name, t) => dBox [keyword "extern", space 1,
+ keyword "val", space 1,
+ style (HTMLDev.link ("#V_" ^ name), [ident name]),
+ space 1,
+ string ":", space 1,
+ p_typ t]
+ | DVal (name, NONE, _) => string "Unannotated val declaration!"
+ | DVal (name, SOME t, _) => dBox [keyword "val", space 1,
+ style (HTMLDev.link ("#V_" ^ name), [ident name]),
+ space 1,
+ punct ":", space 1,
+ p_typ t]
+ | DContext name => dBox [keyword "context", space 1,
+ style (HTMLDev.link ("#C_" ^ name), [ident name])]
+
fun output d =
let
val dev = HTMLDev.openDev {wid = 80,