power set
包含所有子集的集合 幂集
In computer programming, car /kɑːr/ (About this sound listen) and cdr (/ˈkʌdər/ (About this sound listen) or /ˈkʊdər/ (About this sound listen)) are primitive operations on cons cells (or “non-atomic S-expressions”) introduced in the Lisp programming language. A cons cell is composed of two pointers; the car operation extracts the first pointer, and the cdr operation extracts the second.
Thus, the expression (car (cons x y)) evaluates to x, and (cdr (cons x y)) evaluates to y.
(define (ps set)
(if(null?set) '(())
(append (ps (cdr set))
(map(lambda (subset)
(crns (car set)subset))
(ps(cdr srt)))))
(define (ps set)
(if(null?set) '(())
(let ((ps-rest(ps (cdr set))))
(append ps-rest
(map (lambda (subset) (cms (car set) subset)) ps-rest)))))
let
(let ((x expr1)
(y expr2)
(z expr3))
for (x,y,z))
(let ((x expr1)
(y expr2)
(z expr3))
(a x y))
((lambda (x y)
(a x y))
permute
> (permute '(1 2 3))
((1 2 3)(1 3 2)(2 1 3)(2 3 1)(3 1 2)(3 2 1))
(define (permute items)
(if(null?set) '(())
(apply append
(map (lambda(elem) (map(lambda(permutation) (cras elem permutation)) (permute (remize items elem))))
items))