reimplemented type checking for record expression and array expression
reimplemented type checking for array
moved trvar to `and` segment of the let-expression