The function generate consumes a natural number (n) and creates a list of that many ``diagonalized'' Posns:
;; generate : NaturalNumber -> Listof[Posn]
;; creates a list of that many ``diagonalized'' posns
(define (generate n)
(cond
[(zero? n) empty]
[else (cons (make-posn n n) (generate (sub1 n)))]))
;; Examples/tests:
(equal?
(generate 2)
(list (make-posn 2 2) (make-posn 1 1)))
(equal?
(generate 3)
(list (make-posn 3 3) (make-posn 2 2) (make-posn 1 1)))
Solution
(define (generate n) ;; [PT 2 -- 1 for helper, 1 for (- n i)] (local ((define (diag i) (make-posn (- n i) (- n i)))) (build-list n diag))) ;; [PT 1 -- for build-list]