Created
November 22, 2013 18:55
-
-
Save jbclements/7604996 to your computer and use it in GitHub Desktop.
turning structures into lists
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(require racket/list) | |
;; a world is (make-world component component component component | |
;; component component component component | |
;; component component component component | |
;; component component component component) | |
(define-struct world (c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16)) | |
;; change the c1 field of a world to the new value | |
;; world any -> world | |
(define (update-c1 w new-val) | |
(make-world new-val | |
(world-c2 world) | |
(world-c3 world) | |
(world-c4 world) | |
(world-c5 world) | |
(world-c6 world) | |
(world-c7 world) | |
(world-c8 world) | |
(world-c9 world) | |
(world-c10 world) | |
(world-c11 world) | |
(world-c12 world) | |
(world-c13 world) | |
(world-c14 world) | |
(world-c15 world) | |
(world-c16 world))) | |
;; change the c2 field of a world to the new value | |
;; world any -> world | |
(define (update-c2 w new-val) | |
(make-world (world-c1 world) | |
new-val | |
(world-c3 world) | |
(world-c4 world) | |
(world-c5 world) | |
(world-c6 world) | |
(world-c7 world) | |
(world-c8 world) | |
(world-c9 world) | |
(world-c10 world) | |
(world-c11 world) | |
(world-c12 world) | |
(world-c13 world) | |
(world-c14 world) | |
(world-c15 world) | |
(world-c16 world))) | |
;; change the c3 field of a world to the new value | |
;; world any -> world | |
(define (update-c3 w new-val) | |
(make-world (world-c1 world) | |
(world-c2 world) | |
new-val | |
(world-c4 world) | |
(world-c5 world) | |
(world-c6 world) | |
(world-c7 world) | |
(world-c8 world) | |
(world-c9 world) | |
(world-c10 world) | |
(world-c11 world) | |
(world-c12 world) | |
(world-c13 world) | |
(world-c14 world) | |
(world-c15 world) | |
(world-c16 world))) | |
;; change the c4 field of a world to the new value | |
;; world any -> world | |
(define (update-c4 w new-val) | |
(make-world (world-c1 world) | |
(world-c2 world) | |
(world-c3 world) | |
new-val | |
(world-c5 world) | |
(world-c6 world) | |
(world-c7 world) | |
(world-c8 world) | |
(world-c9 world) | |
(world-c10 world) | |
(world-c11 world) | |
(world-c12 world) | |
(world-c13 world) | |
(world-c14 world) | |
(world-c15 world) | |
(world-c16 world))) | |
;; change the c5 field of a world to the new value | |
;; world any -> world | |
(define (update-c5 w new-val) | |
(make-world (world-c1 world) | |
(world-c2 world) | |
(world-c3 world) | |
(world-c4 world) | |
new-val | |
(world-c6 world) | |
(world-c7 world) | |
(world-c8 world) | |
(world-c9 world) | |
(world-c10 world) | |
(world-c11 world) | |
(world-c12 world) | |
(world-c13 world) | |
(world-c14 world) | |
(world-c15 world) | |
(world-c16 world))) | |
;; change the c6 field of a world to the new value | |
;; world any -> world | |
(define (update-c6 w new-val) | |
(make-world (world-c1 world) | |
(world-c2 world) | |
(world-c3 world) | |
(world-c4 world) | |
(world-c5 world) | |
new-val | |
(world-c7 world) | |
(world-c8 world) | |
(world-c9 world) | |
(world-c10 world) | |
(world-c11 world) | |
(world-c12 world) | |
(world-c13 world) | |
(world-c14 world) | |
(world-c15 world) | |
(world-c16 world))) | |
;; change the c7 field of a world to the new value | |
;; world any -> world | |
(define (update-c7 w new-val) | |
(make-world (world-c1 world) | |
(world-c2 world) | |
(world-c3 world) | |
(world-c4 world) | |
(world-c5 world) | |
(world-c6 world) | |
new-val | |
(world-c8 world) | |
(world-c9 world) | |
(world-c10 world) | |
(world-c11 world) | |
(world-c12 world) | |
(world-c13 world) | |
(world-c14 world) | |
(world-c15 world) | |
(world-c16 world))) | |
;; change the c8 field of a world to the new value | |
;; world any -> world | |
(define (update-c8 w new-val) | |
(make-world (world-c1 world) | |
(world-c2 world) | |
(world-c3 world) | |
(world-c4 world) | |
(world-c5 world) | |
(world-c6 world) | |
(world-c7 world) | |
new-val | |
(world-c9 world) | |
(world-c10 world) | |
(world-c11 world) | |
(world-c12 world) | |
(world-c13 world) | |
(world-c14 world) | |
(world-c15 world) | |
(world-c16 world))) | |
;; change the c9 field of a world to the new value | |
;; world any -> world | |
(define (update-c9 w new-val) | |
(make-world (world-c1 world) | |
(world-c2 world) | |
(world-c3 world) | |
(world-c4 world) | |
(world-c5 world) | |
(world-c6 world) | |
(world-c7 world) | |
(world-c8 world) | |
new-val | |
(world-c10 world) | |
(world-c11 world) | |
(world-c12 world) | |
(world-c13 world) | |
(world-c14 world) | |
(world-c15 world) | |
(world-c16 world))) | |
;; change the c10 field of a world to the new value | |
;; world any -> world | |
(define (update-c10 w new-val) | |
(make-world (world-c1 world) | |
(world-c2 world) | |
(world-c3 world) | |
(world-c4 world) | |
(world-c5 world) | |
(world-c6 world) | |
(world-c7 world) | |
(world-c8 world) | |
(world-c9 world) | |
new-val | |
(world-c11 world) | |
(world-c12 world) | |
(world-c13 world) | |
(world-c14 world) | |
(world-c15 world) | |
(world-c16 world))) | |
;; change the c11 field of a world to the new value | |
;; world any -> world | |
(define (update-c11 w new-val) | |
(make-world (world-c1 world) | |
(world-c2 world) | |
(world-c3 world) | |
(world-c4 world) | |
(world-c5 world) | |
(world-c6 world) | |
(world-c7 world) | |
(world-c8 world) | |
(world-c9 world) | |
(world-c10 world) | |
new-val | |
(world-c12 world) | |
(world-c13 world) | |
(world-c14 world) | |
(world-c15 world) | |
(world-c16 world))) | |
;; change the c12 field of a world to the new value | |
;; world any -> world | |
(define (update-c12 w new-val) | |
(make-world (world-c1 world) | |
(world-c2 world) | |
(world-c3 world) | |
(world-c4 world) | |
(world-c5 world) | |
(world-c6 world) | |
(world-c7 world) | |
(world-c8 world) | |
(world-c9 world) | |
(world-c10 world) | |
(world-c11 world) | |
new-val | |
(world-c13 world) | |
(world-c14 world) | |
(world-c15 world) | |
(world-c16 world))) | |
;; change the c13 field of a world to the new value | |
;; world any -> world | |
(define (update-c13 w new-val) | |
(make-world (world-c1 world) | |
(world-c2 world) | |
(world-c3 world) | |
(world-c4 world) | |
(world-c5 world) | |
(world-c6 world) | |
(world-c7 world) | |
(world-c8 world) | |
(world-c9 world) | |
(world-c10 world) | |
(world-c11 world) | |
(world-c12 world) | |
new-val | |
(world-c14 world) | |
(world-c15 world) | |
(world-c16 world))) | |
;; change the c14 field of a world to the new value | |
;; world any -> world | |
(define (update-c14 w new-val) | |
(make-world (world-c1 world) | |
(world-c2 world) | |
(world-c3 world) | |
(world-c4 world) | |
(world-c5 world) | |
(world-c6 world) | |
(world-c7 world) | |
(world-c8 world) | |
(world-c9 world) | |
(world-c10 world) | |
(world-c11 world) | |
(world-c12 world) | |
(world-c13 world) | |
new-val | |
(world-c15 world) | |
(world-c16 world))) | |
;; change the c15 field of a world to the new value | |
;; world any -> world | |
(define (update-c15 w new-val) | |
(make-world (world-c1 world) | |
(world-c2 world) | |
(world-c3 world) | |
(world-c4 world) | |
(world-c5 world) | |
(world-c6 world) | |
(world-c7 world) | |
(world-c8 world) | |
(world-c9 world) | |
(world-c10 world) | |
(world-c11 world) | |
(world-c12 world) | |
(world-c13 world) | |
(world-c14 world) | |
new-val | |
(world-c16 world))) | |
;; change the c16 field of a world to the new value | |
;; world any -> world | |
(define (update-c16 w new-val) | |
(make-world (world-c1 world) | |
(world-c2 world) | |
(world-c3 world) | |
(world-c4 world) | |
(world-c5 world) | |
(world-c6 world) | |
(world-c7 world) | |
(world-c8 world) | |
(world-c9 world) | |
(world-c10 world) | |
(world-c11 world) | |
(world-c12 world) | |
(world-c13 world) | |
(world-c14 world) | |
(world-c15 world) | |
new-val)) | |
;;; **** OR **** | |
;; a component-set is | |
;; (list component component component component | |
;; component component component component | |
;; component component component component | |
;; component component component component) | |
;; a world is (make-world component-set) | |
(define-struct world2 (loc)) | |
;; update the 'n'th component with the new value | |
;; world number any -> world | |
(define (update-component w n new-val) | |
(make-world2 | |
(append (take (world2-loc w) n) | |
(list new-val) | |
(drop (world2-loc w) (add1 n))))) | |
(check-expect (update-component (make-world2 (list 10 9 8 7 6 5 4 3 2 1 0 -1 -2 -3 -4 -5)) 3 999) | |
(make-world2 (list 10 9 8 999 6 5 4 3 2 1 0 -1 -2 -3 -4 -5))) | |
;; get the 'n'th component of a world | |
;; world number -> any | |
(define (get-component w n) | |
(list-ref (world2-loc w) n)) | |
(check-expect (get-component (make-world2 (list 10 9 8 7 6 5 4 3 2 1 0 -1 -2 -3 -4 -5)) 3) | |
7) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment