anchor.diff:      ((= S 0) T) ; true, if sum == 0
       ((> (car L) S) (is-subset-sum S (cdr L))) ; number too big
   
  -    (t
  +    (t  ; isSubsetSum(set, n, sum) = isSubsetSum(set, n-1, sum) ||
  +        ;                            isSubsetSum(set, n-1, sum - set[n-1])
         (or
           (is-subset-sum
             S
  
positive.code:         (is-subset-sum
            (- S (car L))
            (cdr L))))))
  
  (defun subsetsum (S L)
    (is-subset-sum S (sort L #'>)))
  
negative.code: ;;; ----------
  ;;; Question 6
  
  ; Solution incomplete: attempted to work from the following reference:
  ; http://www.geeksforgeeks.org/dynamic-programming-subset-sum-problem/
  
  ; Particularly:
  ; isSubsetSum(set, n, sum) = isSubsetSum(set, n-1, sum) ||
  ;                            isSubsetSum(set, n-1, sum - set[n-1])
  ; Base Cases:
  ; isSubsetSum(set, n, sum) = false, if sum > 0 and n == 0
  ; isSubsetSum(set, n, sum) = true, if sum == 0
  
  (defun subsetsum (S L)
    "Incomplete: only returns true is L contains a subset summating to S"
  
    (is-subset-sum S (sort L #'>)))
  
  (defun is-subset-sum (S L)
    "Returns true is L contains a subset summating to S"
  
    (cond
      ;; Base Cases
  