Regarding<p>...the elements of a language are features of a world I inhabit:<p>Environments are values floating above my head. I have an urge to glance up when I’m thinking about what’s in scope. A closure is a one-way tunnel or pipe or wormhole back into the function environment. But the program itself can’t flow through the pipe. Asynchronous control flow is a stream that I imagine myself floating down. I think about where the stream will take me. Functors are giant structures, like a sculpture by Richard Serra. Functor operations act like cranes, helping me to move around those structures.<p>27 years ago I began working on a programming language in which computational abstractions had concrete animated analogs [1]. ToonTalk was my attempt to make a Logo for the 90s. You programmed in a virtual world where you trained robots to put things in boxes, give birds messages to deliver, etc. The mappings are: computation: city, actor or process or object: house, methods: robots, method preconditions: contents of thought bubble, method actions: actions taught to robot, tuples or messages or vectors: boxes, comparison tests: scales, actor spawning: loaded trucks, actor termination: bombs, constants: numbers, text, and pictures,
channel transmit capabilities: birds, channel receive capabilities: nests, program storage: notebooks.<p>ToonTalk became free and open source 12 years ago. 5 years ago I had time to re-implement much of it as a web app [2]. But as Don Hopkins wrote - I'm focussed now on adding AI to Snap!<p>[1] <a href="http://www.toontalk.com" rel="nofollow">http://www.toontalk.com</a>
[2] <a href="https://toontalk.github.io/ToonTalk/" rel="nofollow">https://toontalk.github.io/ToonTalk/</a>