anchor.diff:  (defun ternary-p (exp)
     (cons-op-p exp '|?:|))
   
  +(defun progn-p (exp)
  +  (cons-op-p exp 'progn))
  +
   (defun find-op (op arity)
     (find-if (lambda (op-details) (and (eq op (second op-details))
   				     (eql arity (fifth op-details))))
   	   *ops*))
   
  +(defun special-form-p (form)
  +  (and (consp form)
  +       (member (first form) *special-forms*)))
  +
   (set-php-pprint-dispatch '(satisfies unary-minus-p)
   			 (make-unary-op "-" :none (car (find-op '- 1))))
  -
   
   (set-php-pprint-dispatch '(satisfies aref-p)
   			 (let ((precedence (car (find-op 'aref 2))))
  
positive.code: 
  (defmacro defspecialform (form &body body)
    (let ((arg (gensym)))
      `(set-php-pprint-dispatch '(cons (member ,(first form)))
  			  (lambda (stream ,arg)
  			    (destructuring-bind ,form ,arg
  			      (declare (ignorable ,(first form)))
  			      (macrolet ((fmt (&rest args) `(format stream ,@args))
  					 (write-str (arg) `(cl:write-string ,arg stream)))
  				,@body))))))
    
  (defun pprint-block (stream block &optional colon at-sign)
    (declare (ignore colon at-sign))
    (format stream  "~@<{~;~8I~:@_~{~W~^~:@_~}~-8I~:@_~;}~:>" block))
  
  ;; defspecialform should allow destructuring, and make patterns
  ;; from destructuring
  (defspecialform (if cond true false)
    (fmt "if (~W) ~/php::pprint-block/ else ~/php::pprint-block/" cond (list true) (list false)))
  
  ;; descriptions of varios operations
  (defvar *ops* (loop
     for ops in (reverse
  
negative.code: 			       (assert (= 4 (length op)))
  			       (let ((*B* precedence))
  				 (write (pprint-pop) :stream s))
  			       (write-string " ? " s)
  			       (pprint-indent :block 4 s)
  			       (pprint-newline :fill s)
  			       (let ((*B* precedence))
  				 (write (pprint-pop) :stream s))
  			       (write-string " : " s)
  			       (pprint-newline :fill s)
  			       (let ((*B* precedence))
  				 (write (pprint-pop) :stream s))))))
  
  (set-php-pprint-dispatch '(satisfies progn-p)
  			 (lambda (s form)
  			   (format s "~{~W~:[;~;~]~^~@:_~}"
  				   (mapcan (lambda (form)
  					     (list form (special-form-p form)))
  					   (cdr form)))))
  			 
  (set-php-pprint-dispatch 'cons
  			 (let ((precedence (car (find-op 'funcall 1))))
  			   (lambda (s op)
  