Namespacing in Io is just like building any other object, but the loader doesn’t make it entirely easy to split multiple objects under a namespace into separate files.
In a library I’m writing I wanted something like this, so I created an object called Library, which looks like
Library := Object clone do( loadPath := nil setLoadPath := method(path, loadPath = path self ) forward := method( name := call message name path := Path with(loadPath, name .. ".io") asSymbol if(File with(path) exists, Lobby doFile(path), resend ) ) )
Then you can have parts of a namespace auto-load by setting them up with the loader:
HTTP := Library clone setLoadPath("lib/iou/http")
Io is pretty amazing, having a really good time with the projects I’m working on still.