kirby urner wrote: >>An interesting exercise might be translating some parts of Computer >>Science Logo Style (http://www.cs.berkeley.edu/~bh/logo.html) into >>Python, to get a feel for how much of a text like that is related to the >>language, and how much to the environment. >> >> >>-- >>Ian Bicking / [EMAIL PROTECTED] / http://blog.ianbicking.org > > > One thing that was new was Alan Kay, representing Seymour Papert's > views to the best of his ability, suggested that Seymour no longer > regards "suppressing the receiver" as an important feature, meaning > he's paving the way for explicity mention of the turtle as a message > receiver, e.g. via Python notation: > > So this isn't Logo, but it's probably where we're headed with the turtle > stuff: > > t1 = Turtle() > t1.forward(10) > > I can imagine a big commercial company contributing a colorful > professional grade edition to the education community, via GNU or > whatever. Making the syntax consistently Pythonic would be an > attractive feature (implement bindings for both Python *and* > traditional Logo why not?).
I've struggled a little with how this would work in Logo, and looked some at how different dialects do it. I have it something like this in PyLogo: make :t newturtle tell :t forward 10 And then I was thinking of extending OO in the same way dynamic scope works, which is sloppy but amused me, and maybe an OK kind of sloppy. So: forward 10 Means "ask all the active objects if they know how to 'forward'", where there is a stack of active objects, ending with the global namespace (where plain functions are kept). Then you do: tell :t [forward 10] Which puts :t onto the end of that stack, then executes the block. You can use it like: make :s (open "filename "w) tell :s [write "hi] Which will write "hi" to the filename, since the file object will be on the object stack. However, the plain "tell :t forward 10" would still work as a special syntax, which would require that :t actually implement a forward method. Incidentally, all of this works off the Python object model (to the degree I have it implemented -- it's not quite complete yet), so you really could share a single Turtle implementation between the two. I have yet to figure out how to implement keyword arguments in Logo, though. I was trying to figure out how I might run VPython from PyLogo, and the keyword arguments were a real kicker there. -- Ian Bicking / [EMAIL PROTECTED] / http://blog.ianbicking.org _______________________________________________ Edu-sig mailing list [email protected] http://mail.python.org/mailman/listinfo/edu-sig
