TEST 14

matricola: ______________________________
nome (solo se non si ricorda la matricola): __________________________________



(define (partition ls P?)
  (if (null? ls)
      (list '() '())
      (let ((first (car ls))
            (res (partition (cdr ls) P?)))
        (if (P? first)
            (list (cons first (car res)) (cadr res))
            (list (car res) (cons first (cadr res)))))))



(define (insert n t)
  (cond ((EmptyNBT? t) (MkNBT n EmptyNBT EmptyNBT))
        ((<= n (LabelRoot t)) (MkNBT (LabelRoot t) (insert n (Left t)) (Right t)))
        (else (MkNBT (LabelRoot t) (Left t) (insert n (Right t))))))





(define (CreateSumToFrom f)
  (lambda (n m)
    (if (= n m)
        (f n)
        (+ (f n) ((CreateSumToFrom f) (+ n 1) m)))))