Point ::= struct { x, y : int; }; p :: fn(Point) int = #foreign "p", "./test.so"; mkpoint ::= fn(x:int,y:int) p : Point { p.x = x; p.y = y; }; main ::= fn() { point ::= mkpoint(-3,-5); total ::= p(point); };