At Couples and Co. programmers create lists of couples from lists of symbols and numbers. The list starts with a symbol and every other of the following items on the list is a symbol, too; the remaining items on the list are numbers. You may assume that all given lists are of even length.
(define-struct couple (left right)) ;; A Couple is (make-couple Symbol Number)
Design the function create-couples.
Solution: Grader: Matthias F.
;; [PTS 2, for correct contract, which involves two data ;; defs and/or uses of [Listof ...] ;; create-couples : ;; [Listof (union Symbol Number)] -> [Listof Couple] ;; create couples from an even length list ;; generative recursion (define (create-pairs l) (cond ;; [PTS: 1 for the empty condition, ;; 1 for the ``generative'' recursions] [(empty? l) empty] [else (cons (make-couple (first l) (second l)) (create-pairs (rest (rest l))))])) ;; EXAMPLES/TESTS ;; [PTS 1, for examples/tests] (equal? (create-pairs '()) empty) (equal? (create-pairs '(a 10 b 20)) (list (make-couple 'a 10) (make-couple 'b 20)))