Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (defun recursive-commutation (path-list)
- "Perform recursive commutation on a list"
- (flet ((apply-recursive-commutation (path)
- (let* ((prefix-form (prefix-form path))
- (operator (list (operator prefix-form)))
- (second-path (inherited-path (operand-1 prefix-form) path))
- (third-path (inherited-path (operand-2 prefix-form) path))
- (operand-combinations (safe-path-product (recursive-commutation second-path)
- (recursive-commutation third-path))))
- (loop for operand-combination in operand-combinations
- append (commutation (appended-path operator operand-combination path))))))
- (typecase path-list
- (list (loop for path in path-list
- append (apply-recursive-commutation path)))
- (atom (if (listp (prefix-form path-list))
- (apply-recursive-commutation path-list)
- (inherited-path prefix-form path-list))))))
Advertisement
Add Comment
Please, Sign In to add comment