sicp

sicp sandbox.
git clone git://git.ricketyspace.net/sicp.git
Log | Files | Refs

commit cae3cc6d7bdfa27aa18ad4ebcb0f6724ee5d5698
parent f8310270c46eac78e337d178964b98f186266427
Author: rsiddharth <s@ricketyspace.net>
Date:   Sat, 17 Aug 2019 09:31:19 -0400

Add (net ricketyspace sicp two thirtytwo).

Diffstat:
net/ricketyspace/sicp/two/thirtytwo.scm | 16++++++++++++++++
1 file changed, 16 insertions(+), 0 deletions(-)

diff --git a/net/ricketyspace/sicp/two/thirtytwo.scm b/net/ricketyspace/sicp/two/thirtytwo.scm @@ -0,0 +1,16 @@ +;;;; License: CC0-1.0 + +(define-module (net ricketyspace sicp two thirtytwo) + #:export (subsets)) + +(define (subsets s) + (if (null? s) + (list '()) + (let ((rest (subsets (cdr s)))) + (append rest (map (lambda (item) (cons (car s) item)) rest))))) + +;;; Guile REPL +;;; +;;; scheme@(guile-user)> ,use (net ricketyspace sicp two thirtytwo) +;;; scheme@(guile-user)> (subsets '(1 2 3)) +;;; $6 = (() (3) (2) (2 3) (1) (1 3) (1 2) (1 2 3))