summaryrefslogtreecommitdiff
path: root/shared/lists.rkt
diff options
context:
space:
mode:
authorMike Vink <mike1994vink@gmail.com>2023-03-07 22:14:08 +0100
committerMike Vink <mike1994vink@gmail.com>2023-03-07 22:14:08 +0100
commit6f572ec7c12115198dfeb7756bc8d9f02d8c336d (patch)
tree3a682d0e2def0c0f0032037207d2d9fe30f611a4 /shared/lists.rkt
parentbd5f50be83a10363fdfd4f73a377325cf48b5903 (diff)
this was confusing
Diffstat (limited to 'shared/lists.rkt')
-rw-r--r--shared/lists.rkt28
1 files changed, 28 insertions, 0 deletions
diff --git a/shared/lists.rkt b/shared/lists.rkt
new file mode 100644
index 0000000..9279a57
--- /dev/null
+++ b/shared/lists.rkt
@@ -0,0 +1,28 @@
+#lang racket
+(provide
+ append
+ length
+ list-ref)
+
+(define (append list1 list2)
+ (if (null? list1)
+ list2
+ (cons (car list1) (append (cdr list1) list2))))
+
+(define (length items)
+ (define (length-iter a c)
+ (if (null? a)
+ c
+ (length-iter (cdr a) (+ 1 c))))
+ (length-iter items 0))
+
+(define (list-ref items n)
+ (if (= n 0)
+ (car items)
+ (list-ref
+ (cdr items)
+ (- 1 n))))
+(define (last-pair l)
+ (if (null? (cdr l))
+ l
+ (last-pair (cdr l))))