diff options
author | rsiddharth <s@ricketyspace.net> | 2018-03-24 05:54:29 +0000 |
---|---|---|
committer | rsiddharth <s@ricketyspace.net> | 2018-03-24 05:54:29 +0000 |
commit | 09096bfaa15c34ba4c6010cc0765658e6327c19f (patch) | |
tree | 5a4d90860db8b9391ed29e84be04de4040afcd64 | |
parent | 1e85131ada02788971f7128ea3c25888d4d62b69 (diff) |
net: Add (net ricketyspace sicp one fortythree)
-rw-r--r-- | net/ricketyspace/sicp/one/fortythree.scm | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/net/ricketyspace/sicp/one/fortythree.scm b/net/ricketyspace/sicp/one/fortythree.scm new file mode 100644 index 0000000..f84d17b --- /dev/null +++ b/net/ricketyspace/sicp/one/fortythree.scm @@ -0,0 +1,24 @@ +;;;; Under Creative Commons Attribution-ShareAlike 4.0 +;;;; International. See +;;;; <https://creativecommons.org/licenses/by-sa/4.0/>. +;;;; + +(define-module (net ricketyspace sicp one fortythree) + #:use-module (net ricketyspace sicp one fortytwo) + #:export (repeated square)) + +(define (repeated f n) + (cond ((= n 1) (lambda (x) (f x))) + (else (sicp-compose f (repeated f (1- n)))))) + +(define (square x) (* x x)) + +;;; GNU Guile REPL +;;; +;;; scheme@(guile-user)> ,re (net ricketyspace sicp one fortythree) +;;; scheme@(guile-user)> ((repeated square 1) 5) +;;; $7 = 25 +;;; scheme@(guile-user)> ((repeated square 2) 5) +;;; $8 = 625 +;;; scheme@(guile-user)> ((repeated square 3) 5) +;;; $9 = 390625 |