Functions Computing all subsets of a given set, though straight-forward, is a very good example to demonstrate the power of recursion and higher-order functions (e.g. map ), especially in functional progamming languages . Consider the following Scheme code (a dialect of Lisp ): (define (subsets s)     (if (null? s)          (list '())          (let ((rest (subsets (cdr s))))              (append rest                          (map (lambda (element)