Alien types have a description language based on nested list structure. For example:
struct foo { int a; struct foo *b[100]; };
(struct foo (a int) (b (array (* (struct foo)) 100)))