26 lines · 778 B · Standard ML
RawDownload
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;