Files
beluga/lisp-interpreter/tests/code/bugs.scm
T
Arthur Barraux d8fc7d2d67
Meson Build and Deploy / build (push) Failing after 29s
adding lisp-interpreter
2025-09-24 10:58:09 +02:00

57 lines
1.1 KiB
Scheme

; add a test for every bug that is incountered
; to avoid recreating it in the future
; test basic vector creation and operations
(define v #(1 2 3 4 5 6 7 8 9 10))
(define (sum-to-n n) (/ (* n (+ n 1)) 2))
(define (sum-vector v)
(define (iter sum i)
(if (= i (vector-length v))
sum
(iter (+ sum (vector-ref v i)) (+ i 1))))
(iter 0 0))
(display "Sum to 10: ")
(display (sum-vector v))
(newline)
(assert (= (sum-to-n 10) (sum-vector v)))
; procedures with no arguments don't expand properly
(define (hello-world) (display "hello world") (newline))
(hello-world)
; vector and list assoc
(assert
(= (do ((i 1 (+ i 1)) (n 0 n))
((> i 10) n)
(set! n (+ i n)))
(* 5 11)))
(let ((sym (gensym)))
(assert (eq? sym sym)))
(assert (equal? (cons 2000 1) (cons 2000 1)))
(assert (equal? "apple" "apple"))
(assert (not (eq? 'DEFINE 'DEFINE-MACRO)))
(define (scope-test var)
(let ((var "dog"))
(==> var "dog"))
(==> var "cat"))
(scope-test "cat")
(define (scope-test-named var)
(let block-name ((var "dog"))
(==> var "dog"))
(==> var "cat"))
(scope-test-named "cat")