(#y.(y (y y)) #x.(x a))
expr = [0001], type A:
func = [0002], type F:
var = [0003], type V: y/0
body = [0004], type A:
func = [0005], type V: y/0
param = [0006], type A:
func = [0007], type V: y/0
param = [0008], type V: y/0
param = [0009], type F:
var = [000A], type V: x/0
body = [000B], type A:
func = [000C], type V: x/0
param = [000D], type V: a/0
Every expr is printed on its own line. A variable's name and version are on the
same line, but any sub-exprs are on their own lines. The hexadecimal number in square
brakcets is a unique identifier for each expr object so you can see when/if there
is any structure sharing.