Name: Suomynona 2011-12-21 2:53
So is Common Lisp.
(defmacro aif (cond then else)
`(let ((it ,cond))
(if it ,then ,else)))
#lang racket
(require racket/stxparam)
(define-syntax-parameter it (lambda (stx) (raise-syntax-error 'anaphora "missed context" stx)))
(define-syntax-rule (aif cond then else)
(let ([temp cond])
(syntax-parameterize ([it (make-rename-transformer #`temp)])
(if temp then else))))
(require mzlib/defmacro)
x = a + b equals at a glance, until you have to look up the definitions of a and b, and then find out whether someone ``cleverly'' redefined + for such objects. This is unmaintainable garbage of the highest order.(define (foo f)
(f (+ 2 3)))(+ 2 3) isn't 5 all the time. In defense, one poster says:
(setq x 123)
(defmacro () (incf x))
(defparameter *current-function* nil)
(defmacro custom-defun (name args &rest body &environment env)
(let ((*current-function* name))
`(defun ,name ,args
,@(mapcar (lambda (x) (sb-cltl2:macroexpand-all x env)) body))))
(defmacro this-function ()
`',*current-function*)
(custom-defun yoba () (this-function))
(yoba)
(defun symbol-count (obj lst)
(if (null lst)
nil
(let ((i 0))
(dolist (elm lst)
(if (eql elm obj)
(incf i))))))(matrix-add A B) instead of (+ A B). I hope you die in a fucking fire you cock sucking piece of shit.