Compound Calculus

So Compound Calculus is an extension to lambda calculus meant to look a bit like Lisp, though not quite, because we don't have types yet. I'll add more on this later, but for now, here is a definition of "select" using compound calculus-ish data structures within bondi.

let rec select1 =
  fun f x -> if isPair x 
    then (append (select1 f (car x)) (select1 f (cdr x))) 
    else (if (f x) 
      then [x] 
      else []);;

let rec update1 =
  fun f u x -> if isPair x 
    then (append (update1 f u (car x)) (update1 f u (cdr x))) 
    else (if (f x) 
      then [(u x)] 
      else []);;