local open Obj Const Symtable;in(* To translate a structured constant into an object. *)fun translStructuredConst (ATOMsc(INTscon i)) = repr i | translStructuredConst (ATOMsc(WORDscon w)) = repr w | translStructuredConst (ATOMsc(CHARscon c)) = repr c | translStructuredConst (ATOMsc(REALscon f)) = repr f | translStructuredConst (ATOMsc(STRINGscon s)) = repr s | translStructuredConst (BLOCKsc(tag, comps)) = let val res = obj_block (intOfTag tag) (List.length comps) in fillStructuredConst 0 res comps; res end | translStructuredConst (QUOTEsc (ref v)) = vand fillStructuredConst n obj = fn [] => () | cst::rest => (set_obj_field obj n (translStructuredConst cst); fillStructuredConst (n+1) obj rest);end;
local
open Obj Const Symtable;
in
(* To translate a structured constant into an object. *)
fun translStructuredConst (ATOMsc(INTscon i)) = repr i
| translStructuredConst (ATOMsc(WORDscon w)) = repr w
| translStructuredConst (ATOMsc(CHARscon c)) = repr c
| translStructuredConst (ATOMsc(REALscon f)) = repr f
| translStructuredConst (ATOMsc(STRINGscon s)) = repr s
| translStructuredConst (BLOCKsc(tag, comps)) =
let val res = obj_block (intOfTag tag) (List.length comps) in
fillStructuredConst 0 res comps;
res
end
| translStructuredConst (QUOTEsc (ref v)) = v
and fillStructuredConst n obj = fn
[] => ()
| cst::rest =>
(set_obj_field obj n (translStructuredConst cst);
fillStructuredConst (n+1) obj rest)
;
end;