Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (defun Plus (a b) $Num(eval(PNODE(a))->nd.num+eval(PNODE(b))->nd.num)
- )
- (defun Minus(a b) $Num(eval(PNODE(a))->nd.num-eval(PNODE(b))->nd.num)
- )
- (defun Uminus( b) $Num(-eval(PNODE(b))->nd.num)
- )
- (defun Times(a b) $Num(eval(PNODE(a))->nd.num*eval(PNODE(b))->nd.num)
- )
- (defun Div (a b) $Num(eval(PNODE(a))->nd.num/eval(PNODE(b))->nd.num)
- )
- (defun Mod (a b) $Num(eval(PNODE(a))->nd.num%eval(PNODE(b))->nd.num)
- )
- (defun If (Cond Then Else) $(ENUM(Cond))?PNODE(Then):PNODE(Else)
- )
- (defun EqNonStrict (a b) $((PNODE(a)->tag==NUM&&PNODE(b)->tag==NUM)?((PNODE(b)->nd.num==PNODE(a)->nd.num)?Num(1):Num(0)):((PNODE(a)->tag==NIL&&PNODE(b)->tag==NIL)?Num(1):Num(0)))
- )
- (defun LeqNonStrict (a b) $((PNODE(a)->tag==NUM&&PNODE(b)->tag==NUM)?((PNODE(a)->nd.num<=PNODE(b)->nd.num)?Num(1):Num(0)):Num(0))
- )
- (defun LtNonStrict (a b) $((PNODE(a)->tag==NUM&&PNODE(b)->tag==NUM)?((PNODE(a)->nd.num<PNODE(b)->nd.num)?Num(1):Num(0)):Num(0))
- )
- (defun GeqNonStrict (a b) $((PNODE(a)->tag==NUM&&PNODE(b)->tag==NUM)?((PNODE(a)->nd.num>=PNODE(b)->nd.num)?Num(1):Num(0)):Num(0))
- )
- (defun GtNonStrict (a b) $((PNODE(a)->tag==NUM&&PNODE(b)->tag==NUM)?((PNODE(a)->nd.num>PNODE(b)->nd.num)?Num(1):Num(0)):Num(0))
- )
- (defun Leq (a b) $LeqNonStrict(eval(PNODE(a)),eval(PNODE(b)))
- )
- (defun Lt (a b) $LtNonStrict(eval(PNODE(a)),eval(PNODE(b)))
- )
- (defun Geq (a b) $GeqNonStrict(eval(PNODE(a)),eval(PNODE(b)))
- )
- (defun Gt (a b) $GtNonStrict(eval(PNODE(a)),eval(PNODE(b)))
- )
- (defun Eq (a b) $EqNonStrict(eval(PNODE(a)),eval(PNODE(b)))
- )
- (defun Car (a) $(eval(PNODE(a))->nd.cons.hd)
- )
- (defun Cdr (a) $(eval(PNODE(a))->nd.cons.tl)
- )
- ---
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement