80 likes | 351 Views
Lego/Scheme. By Rusty Burchfield and Brent Hepburn. Background. Limited implementation of Scheme for the standard firmware Developed at Indiana University by three CS undergraduates Developed start to finish in three days. Environment. Petite Chez Scheme 6.1 LegoScheme compiler
E N D
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.
(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-from-sensor 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-slide-up) (task_three))))) Example 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/legoscheme/ • http://home.zonnet.nl/ericbrok/legomind/projects/robo/mindcontrol.htm • More Information • http://www.cs.rit.edu/~bah5108/ LEGO name and Symbol are registered trademarks of the LEGO Group.