LetExp([ VarDec(rate,true,NONE, IntExp(2)), FunctionDec[ (getCost,[ (total,true,int)], SOME(int), LetExp([ VarDec(newrate,true,NONE, IntExp(10)), FunctionDec[ (getExtra,[], NONE, IfExp( OpExp(GtOp, VarExp( SimpleVar(total)), IntExp(100)), AssignExp( SimpleVar(rate), IntExp(5)), AssignExp( SimpleVar(rate), VarExp( SimpleVar(rate)))))]], SeqExp[ CallExp(getExtra,[]), OpExp(TimesOp, OpExp(TimesOp, VarExp( SimpleVar(newrate)), VarExp( SimpleVar(total))), VarExp( SimpleVar(rate)))]))]], OpExp(PlusOp, CallExp(getCost,[ IntExp(250)]), IntExp(20)))