pub fn write_pl(expr: Expr) -> String
Write a PL IR to string.
Because PL needs to be restricted back to AST, ownerships of expr is required.