Syntax extensions

It's possible to "extend" Io's syntax using the squareBrackets and curlyBrackets hooks. (Hat tip: jer)

Creating a "list literal" ala Python and Ruby:

Object squareBrackets := method(
    r := List clone
    call message arguments foreach(arg,
        r push(call sender doMessage(arg)))
    r
)

x := [1, 2, 3]
writeln(x)
# list(1, 2, 3)

Creating a [] indexing "operator":

List squareBrackets := method(index,
    self at(call evalArgAt(0))
)

names := ["Harry", "Ron", "Hermione"]
writeln(names[1])
# Ron