From the examples in the readme, I’m not sure I see what it means to “use records for everything.”
Also, IMO, the ELisp generator should translate
x = 2
y = 2*x
(let* (( x 2 )
( y (* 2 x))))
instead of initializing to nil and calling setq later.