#! /usr/bin/env racket #lang racket (module+ main (displayln total-cost)) (struct item (description quantity unit-cost max-lead-days where-to-get)) (define bill-of-materials (list (item "Arduino(tm) board" 1 21 8 (string-append "http://store.mp3car.com/" "Genuine_Arduino_Uno_R3_SMD_p/OPN-013B.htm" "?gclid=CKizyYOKsrkCFap7Qgod9kgAOQ")) (item "USB a to b" 1 4 7 "https://www.sparkfun.com/products/512") (item "wheel" 2 3 7 "http://www.pololu.com/catalog/product/184") (item "motor" 2 6 7 "http://www.pololu.com/catalog/product/181") (item "half BreadBoard" 1 5 3 "http://www.adafruit.com/products/64") (item "jumper wire male/male assorted lengths" 1 6 3 "http://www.adafruit.com/products/153") (item "jumper wire female/male" 1/5 6 2 (string-append "http://www.nexuscyber.com/" "7-premium-40-pin-male-to-female-jumper-wires")) (item "small squares of double sided tape" 1/30 12 1 (string-append "http://www.officedepot.com/" "a/products/495242/Scotch-Permanent-Double-Sided-Foam-Tape/")) (item "#4-40 Phillips 1/2 inch flat-head screws" 3 .1 1 "home depot, lowes") (item "#4-40 hex nuts" 6 .1 1 "home depot, lowes") (item "#4 lock washers" 3 .1 1 "home depot, lowes") (item "Red LEDs" 2 .1 1 "evil mad science?") (item "Yellow LEDs" 2 .1 1 "evil mad science?") (item "Green LEDs" 2 .1 1 "evil mad science?") (item "330 Ohm Resistors" 6 .1 1 "evil mad science?"))) (define total-cost (apply + (for/list ([thing bill-of-materials]) (* (item-quantity thing) (item-unit-cost thing)))))