CS 3060: Programming Languages

Io

Robert C. Green II, Ph.D.

Day 3

Domin Specific Language

                        OperatorTable addAssignOperator(":", "atPutNumber")
curlyBrackets := method(
    r := Map clone
    call message arguments foreach(arg,
        r doMessage(arg)
    )
    r
)

Map atPutNumber := method(
    self atPut(
        call evalArgAt(0) asMutable removePrefix("\"") removeSuffix("\""),
        call evalArgAt(1))
)

s := File with("phonebook.txt") openForReading contents
phoneNumbers := doString(s)
phoneNumbers keys
println
phoneNumbers values println
                        
                    

Method Missing

                        Builder := Object clone

Builder forward := method(
    writeln("<", call message name, ">")
    call message arguments foreach(
        arg,
        content := self doMessage(arg);
        if(content type == "Sequence", writeln(content)))

    writeln("</", call message name, ">"))

Builder ul(
            li("Io"),
            li("Lua"),
            li("JavaScript")
        )
                        
                    

Concurrency

  1. Coroutines
  2. Actors
  3. Futures

Concurrency

Assignment

Quiz

Read Day 1 - Scala