Lego/Scheme By Rusty Burchfield and Brent Hepburn LEGO name and Symbol are registered trademarks of the LEGO Group. Background • Limited implementation of Scheme for the standard firmware • Developed at Indiana University by three CS undergraduates • Developed start to finish in three days LEGO name and Symbol are registered trademarks of the LEGO Group. Environment • Petite Chez Scheme 6.1 – LegoScheme compiler – LegoScheme source • Lego Mindcontrol – Visual Basic output from LegoScheme LEGO name and Symbol are registered trademarks of the LEGO Group. Features • • • • 10 concurrent tasks Support for most built-in scheme functions Support for lambda definitions Functions defined for direct interaction with RCX LEGO name and Symbol are registered trademarks of the LEGO Group. Limitations • Requires Lego Mindcontrol • Tail-recursive ONLY and without parameters • Limited support for bindings • Only 8 functions • Only 30 signed integers available • Concurrency issues LEGO name and Symbol are registered trademarks of the LEGO Group. Example (define task_zero (lambda () (setup-sensor 1 'reflection 'percent) (set-engine-direction "02" 'forward) (set-engine-speed "02" 4) (set-engine-on/off "02" 'on) (task_one) (task_two) (task_three))) (define task_one (lambda () (let ((x (read-from-sensor 0)) (y (read-fromsensor 2))) (if (= x #t) (set-engine-on/off "02" 'off)) (if (= y #t) (flip-engine-direction "02")) (task_one)))) (define task_two (lambda () (wait 500) (flip-engine-direction "0") (wait 200) (flip-engine-direction "0") (wait 500) (flip-engine-direction "2") (wait 200) (flip-engine-direction "2") (task_two)) (define task_three (lambda () (let ((z (read-from-sensor 1))) (if (> z 50) (play-system-sound 'fast-slideup) (task_three))))) LEGO name and Symbol are registered trademarks of the LEGO Group. Conclusion • Difficult to use – Many restrictions – Hard to setup • Lacking the power of Scheme LEGO name and Symbol are registered trademarks of the LEGO Group. Resources • References – http://www.cs.indiana.edu/~mtwagner/legosch eme/ – http://home.zonnet.nl/ericbrok/legomind/proje cts/robo/mindcontrol.htm • More Information – http://www.cs.rit.edu/~bah5108/ LEGO name and Symbol are registered trademarks of the LEGO Group.