Kartik Agaram
Kartik Agaram
(x, y) or (x, y, z). You could also imagine polar or other coordinate systems that are studied in geometry.
• The HTML DOM is a space where positions can be specified using CSS selectors or XSLT.
• You can imagine a text editor operating in a coordinate space as well. Emacs seems to use a 1D coordinate, just character count from start of buffer. My stuff so far uses 2D: (line index, UTF-8 codepoint index within line)Kartik Agaram
print statements as a message from the "code" coordinate space to a different, 0-D (append-only so there's no notion of coordinate) space.
• Terminal buffers in Emacs take the mostly 0D space of a terminal and augment it with a cursor. When you scroll up to an earlier command and hit a hotkey, the buffer sends a message to itself with the text around the cursor. The message is received at the bottom of the buffer.
• Emacs Slime and other IDEs support keyboard shortcuts to send text from the current buffer to a REPL in some other buffer.
• Ronin and sketch-n-sketch support bidirectional messages between two spaces with very different coordinate systems.
• Live programming systems often show the results of a statement to its right. Examples: alv by @s-ol, Bret Victor (of course), Seymour as above. These too can be seen as a reflexive message from a space to itself. In addition, the message contains an implicit coordinate: the current line.
• GToolkit, Lisp Machines and other Smalltalk systems do a lot of stuff like this. I think all of this can be cast in terms of buffers, coordinate spaces and messages, though you can imagine them as a single, very complex coordinate space like the HTML DOM, or many simple spaces with different possible coordinate systems. For example, in any of them you can create a new "log" space that you can append graphical objects to. Maybe even self-contained interactive graphical widgets.Kartik Agaram
alltom
12/30/2024, 2:15 AMKonrad Hinsen
12/30/2024, 6:49 AM