(define (my-length lis)
(define (loop a n)
(if (null? a) n
(loop (cdr a) (+ 1 n))))
(loop lis 0))
(define (my-length lis)
(if (null? lis) 0
(+ 1 (my-length (cdr lis)))))
(my-length '(1 2 (4 5) 3))
(define (my-filter pred lis)
(define (loop a b)
(cond [(null? a) (reverse b)]
[(pred (car a)) (loop (cdr a) (cons (car a) b))]
[else (loop (cdr a) b)]))
(loop lis '()))
(define (my-filter pred lis)
(cond [(null? lis) '()]
[(pred (car lis)) (cons (car lis) (my-filter pred (cdr lis)))]
[else (my-filter pred (cdr lis))]))
(my-filter char-alphabetic? '(#\2 #\3 #\a #\b))
(define (my-reverse lis)
(define (my-reverse-rec lis1 lis2)
(if (null? lis1) lis2
(my-reverse-rec (cdr lis1) (cons (car lis1) lis2))))
(my-reverse-rec lis '()))