~rhcarvalho/+junk/racket

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#lang racket/base
(require ;racket/list
         rackunit)

(provide list-merge)

;; Merge two sorted list into a sorted list
(define (list-merge a b)
  (cond
    ;[(empty? a) b]
    ;[(empty? b) a]
    [(zero? (length a)) b]
    [(zero? (length b)) a]
    [else (if (< (car a) (car b))
              (cons (car a) (list-merge (cdr a) b))
              (cons (car b) (list-merge a (cdr b))))]))

(check-equal? (list-merge '(1 10 20 30) '(2 9 15 25 42 56))
              '(1 2 9 10 15 20 25 30 42 56))