#lang racket ;;; ---------------------------------------------------------------------- ;;; Provided helper functions for PS6 Solo Problems 1 and 2 (define (iterate-apply next done? finalize state) (if (apply done? state) (apply finalize state) (iterate-apply next done? finalize (apply next state)))) (define (genlist next done? keepLastValue? seed) (if (done? seed) (if keepLastValue? (list seed) null) (cons seed (genlist next done? keepLastValue? (next seed))))) ;;; ---------------------------------------------------------------------- ;;; Provided definition of partial-reverses function for PS6 Solo Problem 1 (define (partial-reverses xs) (partial-reverses-tail xs '() '())) (define (partial-reverses-tail ys rev list-rev) (if (null? ys) (cons rev list-rev) (partial-reverses-tail (rest ys) (cons (first ys) rev) (cons rev list-rev) ))) ;;; ---------------------------------------------------------------------- ;;; Provided definition of weighted-sums function for PS6 Solo Problem 2 (define (weighted-sums numbers) (map (λ (nums) (* (first nums) (foldl + 0 (rest nums)))) (genlist rest null? #f numbers))) ;;; ---------------------------------------------------------------------- ;;; Flesh out this definition for PS6 Solo Problem 1c (define (partial-reverses-iterate xs) (iterate-apply '? ; expression1 '? ; expression2 '? ; expression3 '? ; expression4 )) ;;; ---------------------------------------------------------------------- ;;; Flesh out this definition for PS6 Solo Problem 1d (define (partial-reverses-foldl xs) (foldl '? ; expression1 '? ; expression2 xs)) ;;; ---------------------------------------------------------------------- ;;; Flesh out this definition for PS6 Solo Problem 2b (define (weighted-sums-iter numbers) (define (outer-tail sums nums) (define (inner-tail sum ns) (if (null? ns) (outer-tail ' ') (inner-tail ' '))) (if (null? nums) (reverse sums) (inner-tail ' '))) (outer-tail ' '))