From cae3cc6d7bdfa27aa18ad4ebcb0f6724ee5d5698 Mon Sep 17 00:00:00 2001 From: rsiddharth Date: Sat, 17 Aug 2019 09:31:19 -0400 Subject: Add (net ricketyspace sicp two thirtytwo). --- net/ricketyspace/sicp/two/thirtytwo.scm | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 net/ricketyspace/sicp/two/thirtytwo.scm diff --git a/net/ricketyspace/sicp/two/thirtytwo.scm b/net/ricketyspace/sicp/two/thirtytwo.scm new file mode 100644 index 0000000..31d6446 --- /dev/null +++ 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)) -- cgit v1.2.3