git.fiddlerwoaroof.com
paredit.lisp
4d63beae
 (defpackage :paredit
   (:use :cl)
   (:export ))
 (in-package :paredit)
 
 (defclass cursor ()
   ((%pos :initarg :pos :reader pos)))
 
 (defun make-cursor (&rest path)
   (make-instance 'cursor
                  :pos (copy-seq path)))
 
 (defun get-exp-at-cursor (cursor exp)
   (reduce (lambda (acc next-pos)
             (elt acc next-pos))
           (pos cursor)
           :initial-value exp))
 
 (defun barf-backward (cursor exp)
   (let* ((parent-exp-cursor (apply 'make-cursor
                                    (butlast (pos cursor))))
          (parent-exp (get-exp-at-cursor parent-exp-cursor exp))
          (grandparent-exp-cursor (apply 'make-cursor
                                         (butlast (pos parent-exp-cursor)))))
     
 
 
 
     ))