In HAC, one can define arbitrarily complex datatypes. User-defined datatypes resemble structs in C.
Actually, the user-defined datatype implementations are NOT the same as plain structs. They describe an implementation of an abstract data type with physical types.