#include "share/atspre_staload.hats"
abstype point (a:t@ype)     = ptr 
abstype variable            = ptr 
abstype structure (a:t@ype) = ptr 
typedef descriptor = $tup(int, ref int, ref (structure variable))
// un-comment this line will cause seg-fault, probably due to recursive type. 
//assume variable = point (descriptor) 
local 
fun mk (id:int, rank:int, s:structure variable): descriptor = $tup(id, ref rank, ref s)
in 
implement main0 () = print"Hello World!\n"
end