summaryrefslogtreecommitdiff
path: root/src/content/en/pastebins/2021/09/02/sicp-3-19.adoc
diff options
context:
space:
mode:
authorEuAndreh <eu@euandre.org>2025-04-18 02:17:12 -0300
committerEuAndreh <eu@euandre.org>2025-04-18 02:48:42 -0300
commit020c1e77489b772f854bb3288b9c8d2818a6bf9d (patch)
tree142aec725a52162a446ea7d947cb4347c9d573c9 /src/content/en/pastebins/2021/09/02/sicp-3-19.adoc
parentMakefile: Remove security.txt.gz (diff)
downloadeuandre.org-020c1e77489b772f854bb3288b9c8d2818a6bf9d.tar.gz
euandre.org-020c1e77489b772f854bb3288b9c8d2818a6bf9d.tar.xz
git mv src/content/* src/content/en/
Diffstat (limited to 'src/content/en/pastebins/2021/09/02/sicp-3-19.adoc')
-rw-r--r--src/content/en/pastebins/2021/09/02/sicp-3-19.adoc33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/content/en/pastebins/2021/09/02/sicp-3-19.adoc b/src/content/en/pastebins/2021/09/02/sicp-3-19.adoc
new file mode 100644
index 0000000..166170f
--- /dev/null
+++ b/src/content/en/pastebins/2021/09/02/sicp-3-19.adoc
@@ -0,0 +1,33 @@
+= SICP exercise 3.19
+:categories: lisp programming-languages
+
+[source,scheme]
+----
+(define (cycle? l)
+ (define (rec l x)
+ (cond
+ ((null? x) false)
+ ((eq? l x) true)
+ (true (rec l (cdr x)))))
+ (rec l (cdr l)))
+----
+
+Sample interactive session:
+
+[source,scheme]
+----
+scheme@(guile-user)> (define true #t)
+scheme@(guile-user)> (define false #f)
+scheme@(guile-user)>
+(define (cycle? l)
+ (define (rec l x)
+ (cond
+ ((null? x) false)
+ ((eq? l x) true)
+ (true (rec l (cdr x)))))
+ (rec l (cdr l)))
+scheme@(guile-user)> (cycle? '(1 2 3))
+$9 = #f
+scheme@(guile-user)> (cycle? (make-cycle '(1 2 3)))
+$10 = #t
+----