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 []);;