Difference between revisions of "Deep Lists Assignment"
(→Use) |
|||
Line 3: | Line 3: | ||
=Code To Use= | =Code To Use= | ||
− | + | * [https://docs.racket-lang.org/reference/number-types.html#%28def._%28%28quote._~23~25kernel%29._number~3f%29%29 number?] | |
− | * [https://docs.racket-lang.org/reference/ | ||
* [https://docs.racket-lang.org/reference/pairs.html#%28def._%28%28quote._~23~25kernel%29._list~3f%29%29 list?] | * [https://docs.racket-lang.org/reference/pairs.html#%28def._%28%28quote._~23~25kernel%29._list~3f%29%29 list?] | ||
* [https://docs.racket-lang.org/reference/pairs.html#%28def._%28%28lib._racket%2Fprivate%2Flist..rkt%29._foldl%29%29 foldl] | * [https://docs.racket-lang.org/reference/pairs.html#%28def._%28%28lib._racket%2Fprivate%2Flist..rkt%29._foldl%29%29 foldl] |
Revision as of 14:24, 28 March 2022
original inspiration for this warmup comes from Extra Practice Problems
Contents
Code To Use
Code To Implement
file: | src/main/racket/deep_lists/deep_lists.rkt | |
functions: | deep-fold deep-flatten deep-sum deep-sum-numbers |
Fold
deep-fold
(define (deep-fold list-fold) (error 'not-yet-implemented)) (define deep-foldl (deep-fold foldl)) (define deep-foldr (deep-fold foldr))
You can elect to build deep-fold as a higher order function which returns a function which will deep fold left or right depending on which list fold function is passed to it.
NOTE: You can also elect to just build deep-foldl and/or deep-foldr directly. If you choose to implement only one of deep-foldl and deep-foldr, be sure to comment out the tests for the unimplemented one.
Clients
deep-flatten
Utilize a version of #deep-fold (and perhaps a list reverse depending on which fold direction you choose) to produce a single flattened list version of the deep list.
deep-sum
Sums the numbers in a deep list of numbers and lists.
deep-sum-numbers
Like deep-sum only it ignores values which are neither lists nor numbers.
Test
file: | deep_lists_test.rkt | Test |
source folder: | src/test/racket/deep_lists |
note: ensure that you have removed all printing to receive credit for any assignment.