; A Non Empty List (NEL) is one of ;; (cons Number empty) ;; (cons Number NEL) ;; Examples (cons 12 empty) (cons 13 (cons 12 empty)) ;; TEMPLATE for NELs #| (define (f nel) (cond [(empty? (rest nel)) ... (first nel) ... ] [else ... (first nel) ... ( f (rest nel)) ... ])) |# ;; sum: NEL -> Number ;; sum the numbers in the list (define (sum nel) (cond [(empty? (rest nel)) (first nel) ] [else (+ (first nel) (sum (rest nel)) ) ])) ;; Test (= (sum (cons 12 empty)) 12) (= (sum (cons 13 (cons 12 empty))) 25) ;; nel->string: NEL -> String ;; string version of list separated by spaces (define (nel->string nel) (cond [(and (cons? nel) (empty? (rest nel))) (string-append (number->string (first nel)) " ") ] [(and (cons? nel) (cons? (rest nel))) (string-append (number->string (first nel)) " " (nel->string (rest nel))) ])) ;; Examples (equal? (nel->string (cons 12 empty)) "12 ") (equal? (nel->string (cons 12 (cons 13 empty))) "12 13 ")