#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